3.数据类型与转换
1392字约5分钟
2024-12-02
数据类型
区别就是类可以返回null值,而基本类型不可以
比如Double和double,它们的功能其实差不多,只是Double类型可以返回null类型(因为Double是一个包装类,而double基本类型属于Double这个类的,所以Double是一个引用类型,就可以返回null值),而double类型不可以返回null类型
八大基本数据类型
记个大概,byte在负128到正127之间,short在正负3万两千以内,int在正负21亿以内
Java整形常量(具体值)默认为 int 型
记个大概,byte在负128到正127之间,short在正负3万两千以内,int在正负21亿以内
byte类型
byte num2 = 20; //占用1个字节8位
byte nu2 = -128; //-128是byte的最小值
占用一个字节
取值范围:-128
到 127
shote类型
short num3 = 30; //占用2个字节16位
占用两个字节
取值范围:-32768
到 32767
int类型
int num1 = 10; //一般经常使用int
int num11 = 2147483647; //占用4个字节32位,2147483647是int的最大值
占用四个字节
取值范围:-2147483648
到 2147483647
long类型
long num4 = 9223372036854775807L; //占用8个字节64位,9223372036854775807是long的最大值,要在数字后面加上大写的L
long num5 = 40L; //Long类型的要在数字后面加个L
占用八个字节
取值范围:-9223372036854775808
到 9223372036854775807
浮点数
float num6 = 2.14748364F; //float类型的要在数字后面加上F,占用4个字节
double num7 = 3.1415926; //占用8个字节,常用,double类型的数字也是占用8个字节,所以取值范围和long一样
float占用四个字节
double占用八个字节
浮点数,也就是小数,浮点类型
浮点数的尾数部分可能会丢失,从而造成精度损失(小数都是近似值)
如果要对数字进行比较,例如银行的金融系统,可以使用 BigDecimal 这个类来进行比较,这个类是一个数学工具类
浮点数在机器中存放的形式:浮点数 = 符号位 + 指数位 + 尾数位
字符
字符的本质是一个整数,在输出时,输出Unicode码所对应的字符,所以char类型是可以运算的
char name = 'n'; //一个字符,无论那个字符是英文还是中文 占用2个字节
char name1 = '你';
字符占用两个字节
字符串
//引号里面的字符可以输入单个或者多个字符,无论中英文
String name1 = "国";
String name2 = "hello";
//错误写法
String a = 1;
String a = 你好;
// 字符串与字符串之间比较
String name = "hello";
System.out.println("world".equals(name)); // false
String不是 关键字,是一个类,String可以表示引用类型,也可以是字符串
布尔值
布尔值中没有 null
值
boolean flag = true;
boolean flag1 = false;
布尔值: 只表示正确与错误
字节单位转换
位(bit):是计算机 内部数据 储存的最小单位,11001100是一个八位二进制数,习惯上用小写b来表示
字节(byte):是计算机中 数据处理 的基本单位,习惯上用大写B来表示
1B(byte,字节) = 8bit(位)
字符:是指计算机中使用的字母、数字、字和符号
1bit(b)表示1位
1Byte(B)表示一个字节
8b = 1B
1024B = 1KB
1024KB = 1M(兆)
1024M = 1G
数据类型转换
byte、short和 char 之间不会相互自动转换
布尔值是不参与类型转换的
基本数据类型转换为字符串(String)
int a = 123;
// 这样int类型就转换为Stirng类型了
String name = a + "";
字符串(String)转换为对应的基本数据类型
注意:String的内容为数字时才能正常转换;如果String的内容为字母或者汉字,则会转义失败,抛出异常,导致程序终止;也就是说只有当String的内容为数字时才能转义成功,当然boolean类型除外
// 字符串转换为数据类型
String name = "123";
int num1 = Integer.parseInt(name);
int num2 = Integer.parseInt("456");
double num2 = Double.parseDouble(name);
// 字符串转换为布尔值
String b = "true";
boolean b1 = Boolean.parseBoolean(b);
// 字符串转换为字符
//解读name.charAt(0) : 意思是得到 s5 的第一个字符,charAt(0)中的0表示的是第一位,第二位则是括号里面输入1
System.out.println(name.charAt(0)); //输出为 1 ,这里的 1 是一个字符,不是数字
char ch = name.charAt(1);
System.out.println(ch); //输出为 2 ,这里的 2 是一个字符,不是数字
强制类型转换
double a = 3.14;
// 在类型旁加上要转换的类型既实现强制转换,注意:高精度转低精度会有精度损失
int b = (int)a;
自动类型转换
低精度转高精度不需要加转换类型,且低精度转高精度不会有精度损失
int a = 30;
double b = a;
总结
- 大转小会报错,除非强制转换
- (byte、short)和char不能相互自动转换,除非强制转换
- 小转大可以