知识屋:更实用的电脑技术知识网站
所在位置:首页 > 科技  > 大数据

Java数据类型、数据类型的转换、ASCLL码表

发表时间:2022-03-25来源:网络

一、Java的数据类型

​ Java是一门强类型的编程语言,它不同于一些弱类型的语言(JavaScript、Python、PHP...)变量的类型一旦确定,则无法修改,在Java中数据类型主要包括以下两大类:

基本数据类型:包括整数、浮点、字符、布尔类型。 引用数据类型:包括类、数组、集合、接口等。

1、基本数据类型

整数型 默认值为0 数据类型 关键字 字节长度 数值范围 字节型 byte 1个字节 -128~127 短整型 shrot 2个字节 -32768·32767 整型 int(默认0 4个字节 -2的31次方~-2的31次方-1 长整型 long 8个字节 -2的63次方~2的63次方-1

long(8字节=64bits)long类型数据在赋值时必须在数据值末尾追加一个“L”(大写)

浮点型 默认值0.0

数据类型 关键字 字节长度 范围 单精度 float 4个字节 1.4013E-45~3.4028E+38 双精度 double(默认) 8个字节 4.9E-324~1.7977E+308

float(4字节=32bits)float类型数据在赋值时,必须在末尾追加“f”或“F”

布尔型 默认值false

数据类型 关键字 字节长度 范围 布尔类型 boolean 1个字节 true false

关于char类型
“\”在java中是一个转译符号,可以将斜杠之后的内容转译为特殊符号,如:
\n 换行
\t 制表符
\b 退格

注意事项

​ 在对浮点数操作时。可能会由于计算机进行运算时精度丢失问题,导致实际结果跟预期结果不一致,例如:

//对于两个double类型/float类型的数计算,由于计算机在计算时会缺失精度 //不是预期的0.3,建议对于浮点数计算使用java.math.BigDecimal(引用数据类型) double d1=0.1; double d2 = 0.2; double d3 = d1 + d2; System.out.println(d3);//实际结果为:0.30000000000000004 而非预期的 0.3 float f1=0.2f; float f2=0.3f; float f3=f1-f2; //结果 -0.10000000001 System.out.println(f3);

​ 因此,在涉及到一些比较敏感的(金额)浮点数据时,不能够使用double或者float;在实际项目中对于这些敏感的浮点数会使用Java.math.BigDecimal(引用数据类型)

2、引用数据类型

​ java中的数据类型除了8基本类型数据外,其余的数据类型都是引用类型,常用的引用类型:类,数组,接口等

​ 以 类 举例

创建学生类 在一个类中会包含一些变量(全局变量)和一些方法

public class Student{ //定义的一个字符串变量 String stuname=“张三”; char sex='男'; int age=20; //定义一个方法 public void showInfo(){ System.out.println(syuname); System.out.println(sex); System.out.println(age); } }

如何使用这个学生类型(引用数据类型)

public static void main(String[] args){ //定义学生类型 引用数据类型需要创建 引用对象 //引用数据类型 变量名= null //基本数据类型 变量名=初始值 //对于类的创建 //类名 对象名 = new 类名(); student stu= new Student; //对象名。方法名(); stu.showInfo(): }

引用数据类型和基本数据类型的区别?

创建方式不同,基本数据类直接通过定义变量的方式创建,而引用数据类型需要new一个对象 在JVM的内存分配不同,基本数据类型的内存在栈内存中直接创建,而引用数据类型是在栈内存中定义引用的地址,实际的内存分布在堆内存中 引用数据类型,可以调用它的方法,而基本数据类型没有

引用数据类型的内存分布图

基本数据类型的内存分布图

二、java的数据类型的转换

为什么需要数据类型转换?

​ 在Java中数据进行计算时,必须要求计算的元素的数据类型一致,如果数据类型不一致需要进行转换

数据转换分类

1、自动类型转换

​ 转换规则:范围小的类型向范围大的类型(从小到大)

​ byte—>short—>int—>long—>float—>double

布尔类型不参与转换

2、强制转换类型

整数与整数之间的强转 public static void main(String[] args) { //int类型 int i=1; //byte 类型 byte j=100; //由于i和j不同类型, 不能直接计算,程序会自动将j的类型向上提升为int类型 //所以i+j之后依然时 int类型 //此时 int的内存的阿玉byte的内存 会出现数据溢出的情况,JVM不允许 //byte s=i+j; 等号两边类型不匹配 int y=i+j; System.out.println(y); //如果一定要使用byte赋值 还有一种办法 就是将两边的类型一致 byte s=(byte)(i+j); //两个数再相加时 会先自动提升到int类型 然后再相加 } 整数与小数之间的强转 //整数和小数之间 也会丢失精度 int n2=100; double n3=3.5; int n4= (int)(n2+n3); //相加时先提升为double类型,然后相加后得到double类型 //double时8个字节 不能放在4个字节的长度中 //(这里好比double为一桶水 int为一杯水 相当于将一桶水倒入一杯水中) //只能留住一杯水的内容 所有 这里如果强转int 小数会丢失精度0 System.out.println(n4); 小数与小数之间的强转 // float 与 double 类型 float f1=3.14f; double d2=3.5; double dd=f1+d2; float ff=(float)(f1+d2); 丢失精度的情况 // 强转时会丢失精度 byte n = 100; int m = 30; byte mm = (byte)( n + m); // 因为最大值为127 再往后就是从最小值开始-128 System.out.println(mm); // 整数和小数之间 也会丢失精度 int n2 = 100; double n3 = 3.5; int n4 = (int)(n2 + n3);

三、Java的字符和ASCLL码表

字符 int值 a 97 A 65 0 48 依次小写字母往后都是数字,例如b为98,C为99... A:65 B:66 C:67 0:48 1:49 2:50 .....



字符与数据的转换 public static void main(String[] args) { //int 与 char类型的转换 //每一个char类型都有一个ASCll码表 char c='a'; //自动提升:因为char类型占2个字节 int占4个字节 int n=c; System.out.println(n); //先相加 在转换 char c2=(char)(n+2); //需要强转 //字符+字符 char c3='a'+'b'; System.out.println((int)c3); }
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜