小白的20天Java学习打卡day3

Sahar ·
更新时间:2024-11-10
· 642 次阅读

太原理工大学机器人团队20天学习打卡day3 1、数据类型​ ①数据类型的作用 程序当中有很多数据,每一个数据都是有相关类型的,不同数据类型的数据占用空间大小不同。 数据类型的作用是指导JVM在运行程序的时候给该数据分配多大的内存空间。 ​②java中的数据类型: 基本数据类型 引用数据类型【后面讲】
* 类
* 接口
* 数组
* … ​③基本数据类型

基本数据类型包括四大类八小种

第一类:整数型 byte,short,int,long 第二类:浮点型 float,double 第三类:布尔型 boolean 第四类:字符型 char

注意:字符串不属于基本数据类型属于引用数据类型,字符属于基本数据类型

​④八种基本数据类型各自占用空间大小是多少?
基本数据类型 占用空间大小【单位:字节】
byte 1
short 2
int 4
long 8
float 4
double 8
boolean 1
char 2

计算机在任何情况下都只能识别二进制
【现代计算机底层采用交流电的方式,接通和断开就两种状态】

​⑤什么是二进制? 数据的一种表示形式。十进制表示满十进一原则。二进制表示满二进一原则 ⑥字节【byte】

1 byte = 8 bit 【1个字节 = 8个比特位】
一个比特位表示一个二进制位: 1/0
1 KB = 1024 Byte
​…

​⑦byte类型的取值范围是什么

整数型当中的byte类型,占用1个字节,所以byte类型数据占用8个比特位。

* 关于java中的数字类型,数字都是有正负之分的,所以在数字的二进制当中有一个二进制位被称为“符号位”。 * 并且这个符号位在所有二进制位的最左边,0表示正数,1表示负数。 * byte类型最大值:0111111转化为十进制2^7-1=127 * byte类型最小值:-128 * byte类型取值范围[-128 ~ 127] ⑧计算机是怎么表示现实世界中的文字的呢?【字符编码】

char 类型表示的是现实世界中的文字,文字和计算机二进制之间“默认”情况下是不存在任何转换关系的。

为了让计算机可以表示现实世界当中的文字,我们需要进行人为的干涉,需要人负责提前制定好“文字”和“二进制”之间的对照关系。这种对照关系被称为字符编码

计算机最初只支持英文,最先出现字符编码是:ASCII码

a'---->97【01100001】 a'—(按照ASCII解码)—>01100001—(按照ASCII编码)—>'a'

编码和解码的时候采用同一套字典/对照表,不会出现乱码

当解码和编码的时候采用的不是同一套对照表,会出现乱码问题。

随着计算机的发展,后来出现了一种编码方式,是国际化标准组织ISO制定的,这种编码方式支持西欧语言,向上兼容ASCII码,仍然不支持中文。这种编码方式是:ISO-8859-1,又被称为latin-1

随着计算机向亚洲发展,计算机开始支持中文、日文、韩文等文字,其中支持简体中文的编码方式:

GB2312<GBK<B18030

支持 繁体中文:大五码 big5

后来出现了一种编码方式同意了全球所有的文字,容量较大,这种编码方式叫做:unicode编码

java语言源代码采用的是unicode编码方式,所以标识符可以用中文

⑨八种数据类型的取值范围
基本数据类型 取值范围 默认值
byte -128~127 0
short -32768~32767 0
int -2147483648~2147383647 0
long 0
float 0.0
double 0.0
boolean true,false false
char 0~65535 \u0000

注意:short和char所表示的种类总数是一样的,只不过char可以表示更大的正整数,因为char没有负数

⑩关于八种基本数据类型中的默认值 public class DataTypeTest01{ //成员变量没有手动赋值系统会默认赋值,局部变量不会 //变量还是遵守这个语法:必须先声明再赋值,才能访问 static int f;//成员变量 public static void main(String[] args){ System.out.println(f);//结果是0 } }

八种数据类型的默认值是一切向0看齐

2、数据类型详解

知识点大部分在代码中

①字符型char public class DataTypeTest02 { public static void main(String[] args){ char c = 'a'; System.out.println(c); char x ='国'; System.out.println(x); //一个中文占用两个字节,char类型正好是两个字节 //所以java中的char类型变量可以存储一个中文字符 //char y = 'ab'; //ab是字符串不能用单引号括起来,编译错误 //char k = "a"; //"a"是字符串类型,k是char类型,类型不兼容,编译错误 } }

转义字符

​ 转义字符出现在特殊字符之前,会将特殊字符转换成普通字符

public class DataTypeTest03 { public static void main(String[] args){ char c1 = 'n'; System.out.println(c1);//普通的n字符 char c2 = '\n'; //编译能够通过,说明这不是个字符串,而是个字符 //这是一个“换行符”,属于char类型 //反斜杠在java语言中有转义功能 //System.out.println();和 System.out.print();的区别: //println表示输出之后换行,print表示输出但是不换行 char c3 = '\t';//制表符tab //强调:制表符和空格不一样,他们的ASCII码不同 System.out.print("A"); System.out.println(c3); System.out.println("B");//输出的结果为A B //要求在控制台上输出“反斜杠字符” //char k = '\'; //反斜杠和后面的单引号一起成为一个字符 ,\'表示普通不具备特殊含义的单引号字符 char k = '\\'; //解释:第一个反斜杠具有转义功能,将后面的反斜杠转义为普通的反斜杠字符 //结论:在java中两个反斜杠表示一个普通的反斜杠字符 System.out.println(k); //输出结果为 \ //要求输出一个单引号 //char a = ''; java中不允许这样编写程序,编译报错 char a = '\''; //反斜杠将第二个单引号转换成普通的单引号字符,第一个单引号与最后一个单引号配对 System.out.println(a); //输出结果为 ' char m = '中'; System.out.println(m); /*JDK中自带的native2ascii.exe命令,可以将文字转换成unicode编码形式 怎么使用这个命令: 在命令行输入native2ascii,回车,输入文字之后回车即可得到unicode编码 */ char n = '\u4e2d'; //'中'对应的unicode编码是 4e2d //其中\u 表示后面的一串数字是某个文字的unicode编码 } } ②整数型 java中的整数型字面值被默认当作int类型处理。要让整数型被当作long类型来处理的话,需要在整数型字面值后面添加l / L,建议使用大写的L java语言当中的整数型字面值有三种表示方式: 第一种方式:十进制【是一种缺省的默认方式】 第二种方式:八进制【在编写八进制整数型字面值的时候需要以0开始】 第三种方式:十六进制【在编写十六进制整数型字面值的时候需要以0x开始】 public class DataTypeTest04 { public static void main(String[] args){ int a = 10; int b = 010;//整数型字面值以0开头的,后面那一串数字就是八进制形式 int c = 0x10;//整数型字面值以0x开头的,后面那一串数字就是十六进制形式 System.out.println(a);//10 System.out.println(b);//8 System.out.println(c);//16 System.out.println(a+b+c);//34 int i = 123; //123这个整数型字面值也是int类型 //i声明变量时也是int类型 //int类型的123赋值给int类型的变量i,不存在类型转换 long x = 456; //456整数型字面值被当作int类型,占用4个字节 //x变量在声明的时候时long类型,占用8个字节 //int类型的字面值456赋值给long类型的变量x,存在类型转换 //int类型转换成long类型 //int类型是小容量 //long类型是大容量 //小容量可以自动转换成大容量,成为自动类型转换机制 //long z = 2147483648; //编译错误:过大的整数2147483648 //2147483648被当作int类型4个字节处理,但是这个字面值超出int的范围 //解决错误 //2147483648一上来就当作long处理 long z = 2147483648L; //不存在类型转换 } } public class DataTypeTest05{ public static void main(String[] args){ long x = 100L; //int y = x; //编译报错,大容量不能直接赋值给小容量 //大容量转换成小容量,需要进行强制类型转换 //强制类型转换需要加“强制类型转换符” //加上强制类型转换符之后编译通过了,但是运行阶段可能损失精度 //所以强制类型转换谨慎使用,因为损失精度之后可能损失严重 int y = (int)x; //强转原理:将左边的二进制砍掉【所有的数据强转的时候都是这样完成的】 //原始数据:00000000 00000000 00000000 00000000 10000000 00000000 00000000 00000000 //00000000 //强转之后的数据:10000000 00000000 00000000 00000000 //将以上的补码转换到原码就是最终的结果 long k = 2147483648L; int e = (int)k; System.out.println(e);//损失精度严重,结果是负数 //根据目前所学内容,下面程序应该无法编译通过 //理由:50是int类型的字面值,b是byte类型的变量,显然大容量int转换成小容量byte //大容量转换成小容量是需要添加强制类型转换符的,以下程序没有添加强转符号,所以编译报错。 byte b = 50; //编译发现编译可以通过 //在java语法当中,当一个整数类型字面值没有超出byte类型取值范围的话,该字面值可以直接赋值给byte //类型的变量 //byte b2 = 128; 编译报错 //128这个int类型的字面值已经超出了byte类型的取值范围,不能直接赋值给byte类型变量 //纠正错误 byte b2 = (byte)128; //一定会损失精度 //原始数据:00000000 00000000 00000000 10000000 //强转之后:10000000 } } 小结

今天主要学习了数据类型的作用,分类,所占空间的大小,取值范围,默认值。详解中,学习了字符型,其中学习了转义字符的用法,整数型,其中学习了类型转换等


作者:waitin丶



java学 JAVA java学习

需要 登录 后方可回复, 如果你还没有账号请 注册新账号