基本数据类型:
一个字节:boolean,byte,
两个字节:char,short
四个字节:int,float
八个字节:double,long
https://blog.csdn.net/weixin_36431280/article/details/78430786
String类型
utf-8编码情况下,一个中文字符占3个字节
gbk编码情况下,一个中文字符占2个字节
英文字符都是一个字节
装箱拆箱
在Integer为null的时候不能等于int
当比较
Integer i = new Integer(200);
int j=200;
i==j true
进行了两步,j装箱变为Integer,Integer重写equals方法比较的是值的大小。
Integer i=10;//装箱
int j=i; //拆箱
Integer i=10;
int j=10;
i==j;//true,拆箱,会转换成int类型来进行比较,和上面new Integer()会有点不一样。
Integer缓存:和String常量池类似,但范围只有-128-127
Integer a=100,b=100;
a==b true//Integer缓存池里面只有一份数据,就像String一样
Integer a=200,b=200
a==b false//不能放到Integer缓存池里面,就像两个对象,所以不相等
java中只有值传递
public class Solution { public static void main(String[] args) { Integer a=new Integer(100); Integer b=new Integer(200); Solution s=new Solution(); s.swap(a, b);//这里其实是传的引用的复制的值 System.out.println(a); } public void swap(Integer a,Integer b) {所以只修改了复制的值,并没有直接去改引用 Integer temp=b; b=a; a=temp; } }
输出100
基本类型转换
正向过程:由低字节向高字节自动转换
byte->short->int->long->float->double
逆向过程:使用强制转换,可能丢失精度。
int a=(int)3.14;
java中的类型自动提升规则:
黙认浮点类型为double,float数据类型有一个后缀为" f "或" F "。
long类型有一个后缀,为" l " 或者" L "。
java的switch中可以为byte吗?
switch默认只能是int和枚举类型
因为byte,short,char可以自动向上转换为int,所以是可以用byte的
但是不能用long,因为向下转型会丢失精度
switch在jdk1.7以后可以用String类型了。