Java教程

Java_02 基础学习_数据类型与类型转换

本文主要是介绍Java_02 基础学习_数据类型与类型转换,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

数据类型

Java是强类型语言

要求变量的使用要严格符合规定,所有变量必须先定义后才能使用

Java的数据类型分为两大类

基本数据类型(primitive type)

数值类型
整数类型
  1. byte 占1个字节范围:-128~127

  2. short占2个字节范围:-32768~32767

  3. int占4个字符范围:-21亿~21亿

  4. long占8个字符范围:(反正就是超级超级大的范围)

    注意一点:long类型变量在赋值的值后面要加一个L

    long num = 30L
    
  5. 整数拓展

    进制 :二进制0b 十进制 八进制0 十六进制0x

    int i1 = 10;
    int i2 = 010;//八进制10,0只代表八进制转换十进制标志,后面的是八进制数;
    int i3 = 0x10;//十六进制10,0x只代表十六进制转换十进制标志,后面的是十六进制数;
    System.out.println(i1);
    System.out.println(i2); //结果为8
    System.out.println(i3); //结果为16
    
浮点类型
  1. float占4个字节

    注意一点:float类型变量在赋值的值后面要加一个F

    float num = 50.1F;
    
  2. double占8个字节

  3. 浮点数拓展 使用BigDecimal类

    为什么要使用BigDrcimal类?

    //背景引入:float和double有其局限性
      float f =0.1f; //0.1
      double d = 1.0/10; //0.1
    
      System.out.println(f == d);//判断是否相等,结果为False
    
      float d1 = 231323232323323313131313f;
      float d2 = d1 + 1;
      System.out.println(d1 == d2);//结果为true,此时出现了d1+1 == d1的情况
    //最好完全避免使用浮点数进行比较!
    //最好完全避免使用浮点数进行比较!
    //最好完全避免使用浮点数进行比较!
    
字符类型
  1. char 占2个字节

  2. 字符类型拓展

    char c1 = 'a';
    char c2 = '中';
    
    System.out.println(c1);
    System.out.println((int)c1);//强制转换,结果为数字97
    
    System.out.println(c2);
    System.out.println((int)c2);//强制转换,结果为数字
    //所有的字符本质还是数字
    //编码:Unicode表  2字节 0~65536
    //U0000 ~ UFFFF
    char c3 = '\u0061';//0061为16进制,十进制为 6*16^1+1*16^0=97
    System.out.println(c3);//输出为a;
    
    //转义字符
    //\t 制表符
    //\n 换行
    //...(很多很多转义字符)
    System.out.println("Hello\tWorld");
    System.out.println("Hello\nWorld");
    
    System.out.println("=============================================");
    
    String sa = new String("Hello,World");
    String sb = new String("Hello,World");
    System.out.println(sa == sb);//输出为false;
    
    String sc = "Hello,World";
    String sd = "Hello,World";
    System.out.println(sc == sd);//输出为true;
    //对象  从内存分析
    
boolean类型
  1. 占1位且只有 true 和 false 两个

  2. boolean类型拓展

    boolean flag = true;
    //if (flag == true){} == if(flag){};
    

    Less is more! 代码就要精简易读!

引用数据类型(reference type)

比如:String

接口
数组

类型转换

由于Java是强类型语言,所以进行有些运算的时候,需要用到类型转换。

低---------------------------------------------------------------->高

byte,short,char —> int —> long —> float —> double

运算中,不同类型的数据先转化为同一类型,然后再进行运算。

转换规则:

强制转换:(类型)变量名; 高 ----> 低
自动转换:低 ----> 高

注意问题

  1. 不能对布尔值进行转换

  2. 不能把对象类型转换为不相干的类型

  3. 在把大容量转换到低容量时,强制转换

  4. 转换的时候可能存在内存溢出,或者精度问题!

    内存溢出:

int i = 128;
byte b1 = (byte)i;//输出结果为-128,原因是byte类型最大值为127,赋值128后内存溢出
double b2 = i;//输出结果为128.0

​ 精度丢失:

System.out.println((int)23.7); //23
System.out.println((int)-45.89f); //45
  1. char字符因为本质上是数字,所以也可以进行运算
char c = 'a';
int d = c+1;//d = 98;
System.out.println(d);//输出结果为98;
System.out.println((char)d);//输出结果为b;
  1. 内存溢出的一些补充
//操作比较大的数的时候,注意溢出问题
//JDK7新特性,数字之间可以用下划线分割
int money = 10_0000_0000;
int years = 20;
int total = money * years;//-1474836480,计算的时候溢出了
long total2 = money * years;//默认是int,转换之前就已经存在问题了
long total3 = money * ((long)years);//先把其中一个数转换为long,就能做到对结果的正确转换
这篇关于Java_02 基础学习_数据类型与类型转换的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!