一. 字面值、编码方式
1. 字面值
关于字面值
- 10/100
- 3.14
- “Abc”
- ‘a’
- True、false
字面值就是数据。 字面值是 Java 源程序的组成部分之一。包括标识符和它的关键字,他们都是 Java 源程序的组成部分。
数据在现实世界中是分类别的,所以数据在计算机编程语言中也是有类型的:【数据类型】
- 10、100 属于整数型
- 3.14 属于浮点型
- True、false 属于布尔型
- “Abc”、“张广荣” 属于字符串型
- ‘A’、‘人’属于字符型
注意: Java 语言中所有字符串型字面值必须用双引号括起来,双引号是半角。 Java 语言中所有字符型字面值必须用单引号括起来,单引号是半角。
二. 变量
1. 什么是变量?
变量本质上说是内存中的一块空间,这块空间“有数据类型”、“有名字”、“有字面值”。
变量包含三部分:数据类型、名称、字面值【数据】
变量是内存中存储数据的最基本的单元。
2. 数据类型的作用?
不同的数据类型底层会分配不同大小的空间。
数据类型是指导程序在运行阶段应该分配多大的内存空间。
3. 变量要求
变量中存储的具体的“数据”必须和变量的“数据类型”一致,当不一致的时候编译报错
4. 声明/定义变量的语法格式
数据类型变量名
数据类型:概念在第三部分。
Eg:int 整数型
变量名:只要是合法的标识符就行。规范中要求:首字母小写,后面每个单词首字母大写。
5. 变量声明之后怎么赋值
语法格式: 变量名=字面值
要求:字面值的数据类型必须和变量的数据类型一致。
=等号是一个运算符,叫做赋值运算符,赋值运算符优先运算等号右边的表达式,表达式执行结束之后的结果赋值给等式左边的变量。
6. 声明和赋值可以放到一起完成
int i=10
7. 变量赋值之后,可以重新赋值,变量的值可以变化
int i=10;
System.out.println(i);
i=20;
System.out.println(i);
i=100;
System.out.println(i);
8. 有了变量的概念之后,内存空间得到了重复的使用
int i=10;
System.out.println(i);
System.out.println(i);
System.out.println(i);
…
9. 通常访问一个变量包括两种访问形式
第一种:读取变量中保存的具体数据 get/获取
第二种:修改变量中保存的具体数据 set/设置
I=10; //set
System.Out.Println (i); //get
10. 变量在一行可以声明多个
11. Java 中的变量必须先声明,再赋值,才能访问。
Int i; //程序执行到这里,内存空间并没有开辟出来,变量 i 并没有初始化。所以没有赋值之前是无法访问的。
12. 关于 Java 变量的作用域
什么是作用域?
变量的作用域,其实描述的就是变量的有效范围。在什么范围之内是可以被访问的,只要出了这个范围该变量就无法访问了。
变量的作用域只要记住一句话:出了大括号就不认识了。
13. 关于变量的分类
关于变量声明的位置来分类:
局部变量: 在方法体中声明的变量。
成员变量: 在方法体【类体之内】声明的变量叫做成员变量。
在不同的作用域当中,变量名可以相同。
在同一个作用域当中,变量名不能重名。
三. 数据类型
1. 数据类型的作用是什么
程序当中有很多数据,每一个数据都是有相关类型的,不同数据类型的数据占用空间大小不同。
数据类型的作用是指导 JVM 在运行程序的时候給该数据分配多少空间。
2. Java 中的数据类型包括两种
基本数据类型
引用数据类型
3. 关于基本数据类型
基本数据类型包括四大类八小种: 第一类:整数型 (byte,short,int,long) 第二类:浮点型 (float,double) 第三类:布尔型 (boolean) 第四类:字符型 (char)
4. 字符串“abc”不属于基本数据类型,属于 “引用数据类型” ,字符属于基本数据类型:
字符串使用双引号 “ ” 字符使用单引号‘’
5. 八钟基本数据类型各自占用空间大小是多少?
| 基本数据类型 | 占用空间大小 【单位:字节】 | 取值范围 |
|---|---|---|
| byte | 1 | -128~127 |
| short | 2 | -32768~32767 |
| int | 4 | -2147483648~2147483647 |
| long | 8 | -263~263-1 |
| float | 4 | 有效位 6~7 位 |
| double | 8 | 有效位 15 位 |
| boolean | 1 | true,false |
| char | 2 | 0~65535 |
| 6 计算机在任何情况下都只能识别二进制。例如:只认识 010101010100101… |
文字与二进制通过字符编码的方式进行对照转换,最先出现的是 ASCII 码【采用一个字节编码】
支持简体中文的编码方式是 GB 2312< GBK< GB 18030 支持繁体中文:< big5 > 后来出现了一种方式统一了全球所有文字,容量较大,这种编码方式叫做:Unicode 编码 Unicode 编码方式有多种具体的实现:
UTF-8 UTF-16 UTF-32 Java 语言采用的编码方式是 unicode 编码方式,所以“标识符”可以用中文。
四. Char
关于八种基本数据类型的默认值关于八种基本数据类型的默认值
| 数据类型 | 默认值 | |
|---|---|---|
| byte,short,int,long | 0 | |
| float,double | 0.0 | |
| boolean | false【在 C 语言中 true 是 1,false 是 0】 | |
| char | \u 0000 |
成员变量没有手动赋值系统会默认赋值【局部变量则不会】
八钟基本数据类型的默认值都是一切向0看齐。
一个中文占用2个字节,char类型正好是2个字节
所以Java中的char类型变量可以存储一个中文字符
“ab”是字符串不能用单引号括起来
五. 转义字符(\)
\ :反斜杠在 Java 语言中具有转义功能
\n : 换行符
System.out.println与 print 的区别:println输出之后换行,print表示输出,但是不换行。
\t : 制表符 ,即Tab键
\ ’ : 普通的单引号
\ \ : 普通的反斜杠
\ " : 普通的双引号
怎样在控制台输出“反斜杠字符”?
char k='\\';
System.out.println();
第一个反斜杠具有转义功能,将后面的反斜杠转义为 p 普通的反斜杠字符
结论:因此在 Java 中两个反斜杠代表一个普通的反斜杠字符
怎样在控制台输出一个普通的单引号?
char a='\''; / / 反斜杠具有转义功能,将第二个单引号转换成普通的单引号字符,第一个单引号和最后一个单引号配对。
System.out.println(a);
六. 整数型
Java 语言当中的“整数型字面值”被默认当做 int 处理。要让这个“这个整数型字面值”被当做 long 类型处理的话,需要在“整数型字面值”后面添加 1/L,建议使用大写的 L。
Java 语言当中的整数型字面值有三种表现方式:
第一种方式:十进制【是一种缺省默认的方式】 int i=10
第二种方式:八进制【在编写八进制整数型字面值的时候需要以0开始】 int i=010
第三种方式:十六进制【在编写十六进制整数型字面值的时候需要以0x开始】 int i=0x10
Long y=2147483648 L
long y=2147483648
2147483648是一个过大整数,被当做int类型4个字节处理,但是这个字面值超过int类型范围
解决方法:
在字面值后面添加L,将其当做long类型处理,y是类型变量,以上程序不存在类型转换。
七. 精度损失
计算机二进制有三种表示形式:
原码
反码
补码
计算机在任何情况下底层表示和存储数据的时候采用了补码形式。
正数的补码:和原码相同。
负数的补码:负数的绝对值对应的二进制所有二进制位取反,再加1
当一个整数字面值没有超过 byte,short,char 的取值范围,这个字面值可以直接赋值给 byte,short,char 类型的变量。这种机制被 SUN 允许了,目的是为了方便程序员编程。
char cc=65535 //通过
char cc=65536 //编译报错
八. 浮点型
float 单精度【4个字节】
double 双精度【8个字节,精度较高】
在 Java 语言当中,所有的浮点字面值【3.0】,默认被当做 double 类型来处理。 要想该字面值当做 float 类型来处理,需要在字面值后面添加 F/f
注意: Double 和 float 在计算机内部二进制存储的时候存储的都是近似值。 在现实世界当中有一些数字是无限循环的,列如:3.3333333… 计算机资源是有限的,用有限的资源存储无限的数据只能存储近似值。
九. 布尔型
关于布尔型数据类型:boolean
在Java语言当中boolean类型只有两个值:true、false,没有其他值。
不像C语言当中,0和1可以表示假和真。
在底层存储的时候boolean类型占用1个字节,因为实际存储的时候false底层是0,true底层是1
布尔类型在实际开发当中非常需要,经常使用逻辑运算和条件控制语句当中。
十. 类型转换
关于基本数据类型之间的互相转换:
转换规则:
八种基本数据类型当中除布尔类型之外剩下的 7 种类型之间都可以互相转换。
小容量向大容量转换,称为自动类型转换,容量从小到大排序:
Byte < short ,char < int < long < float < double
注: 任何浮点类型不管占用多少个字节,都比整数型容量大。
Char 和 short 可表示的种类数量相同,但是 char 可以取更大的正整数。大容量转换成小容量,叫做强制类型转换,需要加强制类型转换符,程序才能编译通过,但是在运行阶段可能会损失精度,所以谨慎使用。
当整数字面值没有超出 byte,short,char 的取值范围,可以直接赋值给 byte,short,char 类型的变量。
Byte,short,char 混合运算的时候,各自先转换成 int 类型再做运算。
多种数据类型混合运算,先转换成容量最大的那种类型再做运算。






