目录
1.Java中的标识符
定义
在Java源程序中可以自己命名的单词都是标识符
作用
用来标识类名、对象名、变量名、方法名、类型名、数组名、文件名的有效字符序列
标识符的命名规则
- 只能以数字、字母、下划线、$符号组成,不能含有其他符号
- 不能以数字来头
- 严格区分大小写(例如wy与Wy是不同的标识符)
- 不能使用关键字做标识符
标识符的命名规范
- 取名做到见名知意
- 取名采用驼峰形式:1.类名、接口名:首字母大写,后面的每个单词首字母大写
2. 变量名、方法名:首字母小写,后面每个单词首字母大写
3.常量名:全部大写
2.Java中的关键字
定义
Java语言中已经赋予了特定含义的【Java中所有关键字都是小写的】
关键字
保留字
const、goto
,Java版本中尚未使用,但以后版本可能会作为关键字使用
3.Java中的字面值
定义
字面值就是数据【变量的值】,也是Java源程序的组成部分
int num=100; //100是一个整数字面值
字面值的数据类型
- 整数字面值 【例如10、100】
- 浮点字面值 【 例如3.14 】
- 布尔字面值 【 例如false 】
- 字符字面值 【 例如'A' 】
- 字符串字面值 【 例如"abcd" 】
4.Java语言中的变量
定义
程序运行期间可以被改变的量【变量本质上说是内存中的一片空间,这块空间有数据类型、变量名、字面值,并且可以随时改变】
变量的使用
- 变量声明:数据类型 变量名
- 变量的赋值:变量名 = 数据
//先声明后赋值
int num;
num=3.14;
//声明同时赋值
int num=3.14;
以上两个效果是一样的
变量的分类
- 类体中定义的变量为“成员变量”
- -实例变量(修饰符没有static)
- -静态变量(修饰符有static)
- 方法体中定义的变量为局部变量
public class Hello{
//这里面定义的变量为成员变量
public static void main(String[] args){
//这里面定义的变量为局部变量
}
}
变量的作用域
定义:变量的有效范围,在有效范围内可以被访问
规则:函数作用域可以访问{ }外面作用域的变量
{ }外面作用域不可以访问局部作用域的变量
Java源文件程序的执行顺序
方法体中的Java语句遵循上下执行顺序,类体中的方法与变量声明不遵循上下执行顺序
注意
- 变量必须先声明再赋值才可以访问
- 一行上可以同时声明并赋值多个变量
- 字面值的数据类型要和变量的数据类型一致
- 同一作用域变量名不允许同名
5.Java中的数据类型
指导JVM为变量分配多大的内存空间
数据类型的分类
这里给大家提一下"字符串"属于引用数据类型
字节(byte)
- 1 Byte = 8 bit 【1个字节等于8个比特位】1个比特位表示一个二进制位 1/0
- 1 KB=1024 Byte
- 1 MB=1024 KB
- 1 GB=1024 MB
- 1 TB=1024 GB
八种原始数据类型的取值范围
类型 取值范围
----------------------------------------------------
byte 【 -128~127 】
short 【 -32768~32767 】
int 【-2147483648~2147483647】
long
double
float
char 【 0~65535 】
boolean 【 true、false 】
八种原始数据类型的默认值
类型 默认值
---------------------------------------------
byte、short、int、long 【 0 】
double、float 【0.0】
char 【\u0000】
boolean 【false】
注意:Java中局部变量定义未初始化直接访问会报错,但是成员变量未初始化(static)系统会赋予默认值,直接访问不会报错【八种数据类型的默认值向0看齐】
基本数据类型
1.char类型
存储字符的容器【占用两个字节,只能存储一个中文字符和一个英文字符】
注意:单引号' '只能定义一个字符,双引号" "是字符串,二者不相兼容
char a='ab' //报错:a是一个字符型,无法赋值ab两个值
char b="a" //报错:b是一个字符型,后面不能用双引号【类型不兼容】
注释:这里我想给大家提的是Java与C语言的区别,Java中是无法用char类型赋值字符串的,字符串
要用String类型
转义字符 \
具有转义功能,在遇到特殊字符时会将其变为普通字符【转义字符不能单独输出】
public class hello {
public static void main(String[] args) {
System.out.println("我爱你中国"); //输出:我爱你中国
System.out.println("我爱你\n中国"); //输出:我爱你
// 中国
char a='\\';
char b='\'';
System.put.println(a); //输出\
System.put.println(b); //输出'
}
}
//\n为换行符(\t为制表符)
注释:char类型中引号是两两配对的,即前一个引号会立即和下一个引号配对
说到这里给大家提一下println与print的区别
public class hello {
public static void main(String[] args) {
System.out.println("你好"); //你好
System.out.println("我来自中国");//我来自中国
System.out.print("你好"); //你好
System.out.print("我来自中国"); //你好我来自中国
}
}
注释:能看到print输出的结果紧跟在它上一句输出的结果后面,而println不会,因为println输出
后会默认换行
总结:print输出结果后不会自动换行,println的输出完后默认执行换行
另外还有JDK中还自带一个非常实用的命令—native2ascii.exe命令,它可以将我们输入的文字转变为对应的unicode编码, 使用方法是在dos窗口切换到JDK目录下直接使用即可
2.整数类型
整数类型的分类
- byte
- short
- int(默认)
- long
整数类型的表达方式
//十进制
int a=123;
short b=123;
byte c=123;
long d=123;
//八进制
int a=012;
.....
//十六进制
int a=0x12;
.....
//二进制
int a=0110;
.....
Java语言中整数型字面值被默认当作int类型来处理,取值时超过int范围要加L
int a=123;//此时123是一个int类型
System.out.println(a);//我们正常输出a没有问题,因为123没有超出int范围
long b=2147483648;//此时的2147483648仍然会被当成int类型
System.out.println(b);//我们输出b会报错超出类型范围,因为int的范围最大值为2147483647
注释:总的来说就是我们在Java中定义的所有整数默认都为int类型,变量类型与字面值类型没有关系,
哪怕你定义的变量是long a=123,123默认为一个int类型而不是一个long类型
那么如何才能正确的给我们其他整数类型赋值呢?这个就涉及到Java中的类型转换了
如果想让整数型字面值当作long类型来处理,需要在后面加上L
long a=2147483649;//前面我们说了整数默认类型为int,显然2147483649超出了int类型的
//取值范围,所以这里会报错
long a=2147483649l;//在后面加上L就不会报错了,表示2147483649是一个long类型
整数类型的类型转换
- 自动转换:小容量转大容量
- 强制转换:大容量转小容量,需要加强制转换符
public class hello {
public static void main(String[] args) {
int a=123;
long b=a;
short c=(short)a;
解析:我们定义了一个int类型变量a并为其赋值123,根据上面刚讲的知识可知123是一个int类型,将他赋值
给一个int类型这里没有类型转换所以没有任何问题,第二行代码定义了一个long类型变量b为其赋值
变量a,a是一个int类型,小容量转大容量这里会自动转换,第三行代码定义了一个short类型c为其赋
值变量a,因为a为int类型,c为short类型,大容量转小容量需要加上强转符
//Java中类型转换也有一些特殊规则,比如下面
short d=127;
解析:将一个int类型127赋值给一个short类型明显是大容量转小容量,需要强制转换,但是这里不需要加
强转符,是因为127没有超出short的范围。
}
}
结论:再给变量赋值时候,给定的变量默认都为int类型【注意不要超过int范围,超过需要加L】,当赋
值给一个大于int的变量时候会自动转换,复制给一个需要强制转换,但是如果赋值的数没有超过那个变
量的范围也可以不加强转符,但是不包括引用赋值,比如int a=127;short b=a;这是会报错的
3.浮点类型
浮点型的分类
- float
- double(默认)
Java语言中浮点型字面值被默认当作double类型来处理
double a=3.0;//3.0是一个double类型,将其赋值给double a不会出错
如果想让浮点型字面值当作float类型来处理,需要在后面加上F
float a=3.0F;
4.布尔类型
布尔类型只有两个值false与true,布尔类型在实际开发中非常重要,经常用于逻辑判断和控制语句当中
6.基本数据类型之间的类型转换
规则:
- 八种基本数据类型之间除了布尔型之外剩下的7种数据类型都可以相互转换
- 小容量向大容量转换,称为自动转换
- 大容量向小容量转换,称为强制转换,需要加强转符号
- 任何浮点类型的容量都大于整数类型,char与short同级【容量从小到大排序:byte<short(char)<int<long<float<double】
- 当整数字面值没有超过byte,char,short范围,可以直接赋值给byte,char,short
- byte,char,short混合运算时,各自先转换成int类型再运算
- 多种数据类型混合运算时,先转换成容量最大的那种类型再运算