首页 > 编程语言 >Java 中重要的知识,进阶之路

Java 中重要的知识,进阶之路

时间:2023-10-19 16:25:23浏览次数:53  
标签:拆箱 Java 进阶 包装 知识 数据类型 自动 装箱

1.javac:
.JAVA--.CLASS

2.java JVM:是桥梁
.CLASS--.机器语言二进程文件

3.被 transient 修饰的成员变量,在序列化的时候其值会被忽略
instanceof 是 Java 的保留关键字。它的作用是测试它左边的对象是否是它右边的类
的实例,返回 boolean 的数据类型

4.volatile 有可见行,顺序行,无原子性
volatile 是一个变量修饰符,只能用来修饰变量。无
法修饰方法及代码块等

可见性是指当多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能
够立即看得到修改的值。volatile 关键字提供了一个功能,
那就是被其修饰的变量在被修改后可以立即同步到主内存,被其修饰的变量在每次是用之前
都从主内存刷新。

volatile 可以禁止指令重排,这就保证了代码的程序会严格按照代码的先后顺序执行。
这就保证了有序性。被 volati le 修饰的变量的操作,会严格按照代码顺序执行.

原子性是指一个操作是不可中断的,要全部执行完成,要不就都不执行。
线程是 CPU
调度的基本单位。CPU 有时间片的概念,会根据不同的调度算法进行线程调度。当一个线
程获得时间片之后开始执行,在时间片耗尽之后,就会失去 CPU 使用权。所以在多线程场
景下,由于时间片在线程间轮换,就会发生原子性问题。

主内存中-有自己的工作内存

5..synchronized 是 Java 提供的一个并发控制的关键字.有可见行,顺序行,原子性
被 synchronized 修饰的代码块及方法,在同一时间,只能被单个线程访问.

6.final 可以定义 :变量、方法、类,final 是 Java 中的一个关键字,它所表示的是“这部分是无法修改的”。无法覆盖,无法继承.
String 类的所有方法都没有改变字符串本身的值,都是返回了一个新的对象。
1、如果不是在循环体中进行字符串拼接的话,直接使用+就好了。
2、如果在并发场景中进行字符串拼接的话,要使用 StringB uffer 来代替
StringBuilder。

7.总结string:
字符串有长度限制,在编译期,要求字符串常量池中的常量不能超过 65535,并且在
javac 执行过程中控制了最大值为 65534。
在运行期,长度不能超过 Int 的范围,否则会抛异常。

8.数据超出范围:
这就是发生了溢出,溢出的时候并不会抛异常,也没有任何提示。所以,在程序中,使
用同类型的数据进行运算的时候,一定要注意数据溢出的问题.

9.为了让基本类型也具有对象的特征,就出现了包装类型,它相当于将基本类型“包装起
来”,使得它具有了对象的性质,并且为其添加了属性和方法,丰富了基本类型的操作。

10.拆箱与装箱
那么,有了基本数据类型和包装类,肯定有些时候要在他们之间进行转换。比如把一个
基本数据类型的 int 转换成一个包装类型的 Integer 对象。
我们认为包装类是对基本类型的包装,所以,把基本数据类型转换成包装类的过程就是
打包装,英文对应于 boxing,中文翻译为装箱。反之,把包装类转换成基本数据类型的过程就是拆包装,英文对应于 unboxing,中文
翻译为拆箱。

11.自动拆箱与自动装箱
在 Java SE5 中,为了减少开发人员的工作,Java 提供了自动拆箱与自动装箱功能。
自动装箱: 就是将基本数据类型自动转换成对应的包装类。
自动拆/装箱的实现 < 102
自动拆箱:就是将包装类自动转换成对应的基本数据类型。
Integer i =10; //自动装箱

int b= i; //自动拆箱
Integer i=10 可以替代 Integer i = new Integer(10);
这就是因为 Java 帮我们提供了自动装箱的功能,不需要开发者手动去 new 一个
Integer 对象。

12.可以看到,包装类与基本数据类型进行比较运算,是先将包装类进行拆箱成基本数据类
型,然后进行比较的。
Integer a=1;
System.out.println(a.intValue()==1?"等于":"不等于");
Boolean bool=false;
System.out.println(bool.booleanValue?"真":"假");

在 Java 中,==比较的是对象应用,而 equals 比较的是值

这种使用包装类型定义变量的方式,通过异常来阻断程序,进而可以被识别到这种线上
问题。如果使用基本数据类型的话,系统可能不会报错,进而认为无异常。

13.Netty异步网络应用程序框架.

14.反射
在 java 中,只要给定类的名字,
那么就可以在运行时通过反射机制来获得类的所有属性和方法。

反射机制的缺点:对性能有影响。使用反射基本上是一种解释操作,我们可以告诉
JVM,我们希望做什么并且让它满足我们的要求。这类操作总是慢于直接执行相同的操作。

15.常用java工具包:apache-commons,google-guava,netty
SPI,API

16.Java 代码的编译与反编译那些事儿中
深入分析 Java 的编译原理中
再有人问你 Java 内存模型是什么,就把这篇文章发给他
一文读懂什么是 Java 中的自动拆装箱
一文读懂你到架构师的距离

标签:拆箱,Java,进阶,包装,知识,数据类型,自动,装箱
From: https://www.cnblogs.com/chenshaojun2008/p/17774989.html

相关文章

  • SSL证书基础知识
    前言:由于个人网站域名备案快过了,过段时间需要申请SSL证书,故学习下,参考他人博客。1.0简介ssl证书是区分http和https协议的重要区分之一,利用ssl证书可以对服务器进行身份验证,确保链接目标是合法服务器,这样可以避免中间人攻击和欺骗1.1CA证书和SSL证书CA证书是由CA(证书颁发......
  • javascript如何写不用转义的字符串代码
    js中的String.raw函数 语法 String.raw`templateStr`;  String.raw(obj,...substitutions); 支持能力有限,如可以支持String.raw`c:\aaa\bbb`       //result:   c:\aaa\bbb 但是String.raw`c:\aaa\bbb\`       //result:  ......
  • Java语言基础知识全总结
    一.Java的优点1.      跨平台性。一次编译,到处运行。Java编译器会将Java代码编译成能在JVM上直接运行的字节码文件,C++会将源代码编译成可执行的二进制代码文件,所以C++执行速度快2.      纯面向对象。Java所有的代码都必须在类中书写。C++兼具面向对象和面向过程的特......
  • 3D游戏开发中的数学知识矩阵详解
    矩阵很多同学没有接触过,所以感觉很难,很复杂,其实只要学过矩阵的同学都知道,矩阵运算并不难。今天我们给大家讲讲游戏开发中的矩阵的运算。1:矩阵是什么?矩阵是描述线性变换的一种数学工具,线性变换指的是使用一次函数从一个空间变换到另外一个空间。例如在空间A中的一个2维向量(xa......
  • Java概述
    1什么是Java官方定义:Java是一门面向对象的编程语言,不仅吸收了C++语言中的各种优点,还摒弃了C++里难以理解的多继承,指针等概念,因此Java语言具有功能强大和简单易用两大特性。Java语言作为静态面向对象编程语言的代表,极好实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编......
  • 使用java的poi工具类编辑excel
    我所使用的编辑excel有两种方式:1.使用现成的模板进行填充输出。2.直接生成出新的excel。   第一种方式:模板填充://第一步:读取excel文件try(FileInputStreamfileInputStream=newFileInputStream(templateFilePath);Workbookworkbook=newXSSF......
  • javascript之分片上传,断点续传的实际项目实现详解
    首先,我们需要了解什么是分片上传和断点续传。分片上传是将大文件分成多个小块进行上传,每个小块可以独立上传,从而提高上传速度和稳定性。而断点续传是指在上传大文件时,当上传过程中因断网或其他原因中断,再次上传时可以不用重头开始,而是从中断的地方继续上传。接下来是分片上传和......
  • Python入门进阶:68 个 Python 内置函数详解
    内置函数就是Python给你提供的,拿来直接用的函数,比如print.,input等。截止到python版本3.6.2,python一共提供了68个内置函数,具体如下abs()dict()help()min()setattr()all()dir()hex()next()slice()any()divmod()id()object()sorted()ascii()enumerate()input()......
  • 关于java的常见异常处理
    Java中常用的异常处理包括以下几种类型的异常:编译时异常、运行时异常和错误。在Java中,异常处理是通过异常处理机制来进行的。当程序运行过程中出现异常时,程序会根据异常处理机制来决定如何处理异常,以保证程序的稳定运行。 1.编译时异常(CheckedExceptions)编译时异常在程序编......
  • elasticsearch 8.7.0的Java API详解教程(一)
    最近作者做一个es的搜索,之前采用的是7.12.1,本来接口都已经基本上写好了,后面es要升级到8.7.0,一升级就连接不上es8.7.0了,后面才发现原来es8是默认采用了HTTPS协议,需要配置认证证书,这个问题搞了好久好久,最后终于搞成功了,在此写一篇博客记录一下。一、pom文件<?xmlversion="1.0"encod......