基本数据类型(Integer问题)


基本数据类型:

一个字节: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中的类型自动提升规则:

   1) 所有的byte型. short型和char型将被提升到int型(例外: final修饰的short, char变量相加后不会被自动提升。)
   2)如果一个操作数是long形 计算结果就是long型;
   3)如果一个操作数是float型,计算结果就是float型;
   4)如果一个操作数是double型,计算结果就是double型;
 
 java中:

   黙认浮点类型为double,float数据类型有一个后缀为" f "或" F "。

   long类型有一个后缀,为" l " 或者" L "。

java的switch中可以为byte吗?

switch默认只能是int和枚举类型

因为byte,short,char可以自动向上转换为int,所以是可以用byte的

但是不能用long,因为向下转型会丢失精度

switch在jdk1.7以后可以用String类型了。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM