1.数据类型笔记

数据类型笔记(笔试题目)

1.int型进制问题

public class T1 {
    public static void main(String[] args) {
        int x = 10;     //十进制
        int y = 010;    //八进制
        int z = 0x10;   //十六进制
        System.out.println(x);	//10
        System.out.println(y);	//8
        System.out.println(z);	//16
    }
}

2.float和double型

注意:浮点类型float和double存在字节有限、离散、舍入误差、大约、接近但不等于等特点。所以应避免使用浮点数进行比较!
public class T1 {
    public static void main(String[] args) {
        float f = 1.1f;
        double d = 1.1;

        System.out.println(f);	//1.1
        System.out.println(d);	//1.1
        System.out.println(f == d);

        float f1 = 123123123123f;
        float f2 = f1 + 1;
        System.out.println(f1 == f2);   //true
    }
}
所以f和d看似一样,f1+1后还等于f1但因为其浮点类型的特性,导致不相等。

3.char型

char范围0-65535,java采用unicode编码,字符型数据在进行计数时是使用对应字符的编码数字进行计算
public class T1 {
    public static void main(String[] args) {
        char c1 = 'a';
        System.out.println(c1);//a
        System.out.println((int)c1);//97
        System.out.println(c1 + 1);//98

        char c2 = '\u0061'; //unicode编码
        System.out.println(c2);//a
    }
}

4.String类型 地址比较

String是一个类,使用new就是new一个新对象,会分配一个地址。而直接赋值的s3和s4物理地址是同一个
public class T1 {
    public static void main(String[] args) {
       String s1 = new String("你好,中国");
       String s2 = new String("你好,中国");
       System.out.println(s1 == s2);  //false(这里是比较物理地址)

       String s3 = "你好,中国";
       String s4 = "你好,中国";
       System.out.println(s3 == s4);  //true
    }
}

5.类型转换(精度损失)

低容量转换到高容量数据类型时不会造成精度损失,而反之有可能造成精度损失。而且一般低到高转换是自动转换,而到高到低转换需要强制类型转换
public class T1 {
    public static void main(String[] args) {
        int x = 123456;
        System.out.println((long)x); //低到高转换,不会发生精度损失
        System.out.println((short)x);//-7616  高到低转换发生精度损失

        System.out.println((int)23.7);//23   double型强制类型转换为int型造成精度损失
        System.out.println((int)-23.7);//-23

        //JDK7新特性,数字可以用下划线分割
        int y = 1_000_000_000;
        System.out.println(y);//1000000000
        int year = 20;
        long total1 = y * year;  //20000000000已超出int的范围,计算时默认是两个int计算得到的结果
                                 // (此时已超出范围),然再赋给total1
        long total2 = (long) y * year; //先将其转化为long,结果给long型数据

        System.out.println(total1);//-1474836480
        System.out.println(total2);//20000000000
    }
}

6.字符串拼接

字符串和+操作相当于字符串拼接。注意的是+运行是从左到右依次运算,+的左右2个操作数都不是字符串则进行的是数值运算,如果至少有一个操作数是字符串则进行的是字符拼接
public class T1 {
    public static void main(String[] args) {
        int year1 = 20;
        int year2 = 21;
        System.out.println("" + year1 + year2);//2021
        System.out.println(year1 + year2 + "");//41
        System.out.println(year1 + (year2 + ""));//2021
        System.out.println(year1 + year2 + "" + year1);//4120
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值