自学JAVA-数据类型、类型转换、强制类型转换

数据类型

1.八大基本数据类型
    数值型
        1)整数类型(byte 字节,short 短整型,int 整型,long 长整型)
        2)浮点类型(float 单精度浮点型,double 双精度浮点型比float精度高)
    字符型(char) char类型为2个字节,本质就是一个数值
    布尔型(boolean)
    
2.引用数据类型
    类(class)
    接口(interface)
    数组([])

整数类型

1.整数类型就是用于存放整数值的,比如1002003002.四种整数类型
    byte/字节 1字节 -128~127
    short/短整型 2字节 
    int/整型 4字节
    long/长整型 8字节

3.出现的代码中的整数,默认为int 声明long常量需后面加L或l
    int a = 1; //正常
    int b = 1L; //报错,塞不下
    long c = 1L; //正常

浮点型

1.浮点类型可以表示一个小数,比如0.131.0.432.浮点型分类
    float 4字节
    double 8字节
    
3.出现在代码中的小数,默认为double。声明float常量需后面加F或f
    float a = 10.1; //报错,10.1是double,a是float,放不下
    float b = 10.1F; //正常
    double c = 10.1; //正常
    double d = 10.1F; //正常
    
4.科学计数法4.3e、4.3e-3
    System.out.println(4.3e3);
    System.out.println(4.3e-3);
    
5.小数精度问题 1.13.3/3
    double a = 1.1; // 1.1
    double b = 3.3/3; // 1.0999999999999999

字符型

1.字符类型用来存单个字符,java的char2个字节,可以存汉字,使用单引号

2.测试案例
    char c1 = 'a'; // a
    char c2 = '\t'; //     
    char c3 = '中'; // 中
    char c4 = 97; // a
    char c5 = 0x4e2d; // 中
    char的本质是一个整数,输出的是Unicode码对应的字符,如果非要输出一个整数,
    需要强制转换 (int)c4
    
3.字符型存储
    存储:a -> 97 -> 二进制
    读取:二进制 -> 97 -> a
    
4.char类型可以进行运算
    char a = 'a' + 1;
    System.out.println(a); // b
    System.out.println((int)a); // 98

布尔型与类型转换

1.布尔类型占一个字节,取值truefalse。不能用0或者非0数据代替falsetrue

2.自动类型转换
    java在进行赋值或者运算的时候,精度小的类型可以自动转换为精度大的类型
    
3.数据类型按精度大小排序
    char -> int -> long -> float -> double
    byte -> short -> int -> long -> float -> double
    
4.自动转换注意事项
    boolean不参与转换
    bytecharshortchar之间不会自动转换
    byteshortchar计算转换为int类型
    
5.自动类型提升
    有多种数据类型混合运算的时候,
    会转成精度最大的那个数据类型,
    再进行计算。
    表达"式最终返回结果的类型, 
    自动提升为操作数中精度最高的类型。
    
6.+号两边有一边是字符串,那么就进行字符串拼接
+号两边如果都没有字符串,那么就进行数值相加,转换不了数值就报错
public class Hello {
    public static void main(String[] args) {
        // 测试案例

//        int a = 1; // 正常,默认是int现在赋值给int当然是可以的
//        int b = 'c'; // 正常,char -> int -> long -> float -> double char类型可以提升赋值给int
//        int a = 1;float b = a + 0.1; // 报错,a是int和0.1相加提升到double,再把double赋值给float是放不下的
//        int a = 1;float c = a + 0.1F; // 正常,int+float提升到float,再赋值给float,完全可以
//        int e = 100;byte f = e; // 报错,byte -> short -> int -> long -> float -> double ,byte装不下int
//        byte d = 127; // 正常,127在byte的范围内
//        byte d = 127;char g = d; // 报错,byte和char、short和char之间不会自动转换
//        byte h = 1;byte i = 2;byte j = h + i; // 报错,byte、short、char计算转换为int类型,byte是装不下int的
//        byte a = 2;a = a + 3; // 报错,byte、short、char计算转换为int类型,byte是装不下int的
//        byte a = 2;int b = 0;b = a + 3; // 正常,byte、short、char计算转换为int类型,int赋值给int没问题
//        byte b1 = 3;byte b2 = 7;int x = b1 + b2; // 正常,byte、short、char计算转换为int类型,int赋值给int没问题
//        short a = 100;int b = 200;short c = a + b; // 报错,byte、short、char计算转换为int类型,short是装不下int的
//        boolean a = true;int c = a + 1; // 报错,boolean不参与转换

//        int a = 100;System.out.println(a + "1"); // 正常,转换为1001
//        boolean a = true;System.out.println(a + "1"); // 正常,转换为true1

    }
}

强制类型转换

1.当类型不一致,又不符合类型自动转换要求,而你又想要转换的时候,就需要使用强制类型转换

2.强制转换的优先级比较高,需要清楚的知道要转换的是表达式的哪一部分

3.类型转换不只是存在于基本数据类型,引用数据类型也可以转换
强转需谨慎
强转需谨慎
强转需谨慎
一定要清楚自己想要什么结果

public class Hello {
    public static void main(String[] args) {
        // 测试案例
//        int a = (int) 100.2;
//        int b = 100;byte c = (byte) b;
//        float b = 2.2f;b = (float) (b + 3.0); // (b + 3.0为什么要写()包起来,如果不写() 那么只是转了b

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值