一、标识符、关键字、变量和数据类型
1.标识符
含义:给类、方法、变量、接口取名字时使用到的字符序列。
组成部分:数字、英文大小写字母、$、_ 、中文。
注意事项:
- 不能以数字开头
- 区分大小写
- 不能使用除了$和_以外的特殊符号
- 不能使用Java的关键字
- 不要使用中文,显得很小白
2.关键字
含义:Java给我们提前定义好的就有特殊意义功能的单词。
注意:每个关键字都有不同的用法,像类名、变量名等都是关键字。
3.变量
1.什么是变量?
变量本质上来说是内存的一块空间,这块空间有类型、名字和字面值。
变量包含三个部分:数据类型、名称、字面值(数据)。
变量是内存中存储数据的基本单元。
变量中存储的具体数据必须和变量的数据类型一致,否则会报错。
变量必须先声明再赋值后才能访问。
在同一作用域当中,变量名不能重名,但变量可以重新赋值。
在不同作用域当中,变量名可以同名(但不建议)。
2.声明变量的语法格式
数据类型 变量名 如:int a
3.声明变量后对变量进行赋值的语法格式
变量名=字面值 如:a = 100
注释:(1).字面值的数据类型必须和变量的数据类型一致;
(2).’='是一个赋值运算符,赋值运算符是先运算符号右边的表达式,表达式执行结束之后的结果赋值给左边的变量。
4.声明变量和变量赋值可不可以一起完成?
声明变量和赋值可以一起完成。格式为:
数据类型 变量名 = 字面值 如:int b = 200
5.变量声明后可以重新赋值吗?
变量声明之后可以重新赋值,变量的值可以变。
如:int i = 10;i = 100
6.变量可以在一行声明多个吗?
变量可以在一行声明多个。 如:int a,b,c
7.通常访问变量的方式有两种:
get:获取,读取变量中保存的具体数据。
set:设置,修改变量中保存的具体数据。
(后面会学,别纠结是啥)
8.变量的分类:
根据声明的位置分为两类:
局部变量:在方法体内声明的变量
全局变量(成员变量):在方法体外声明的变量
9.变量的作用域
变量的作用域是指变量的有效范围,一般遇到**{}**就是一个作用域。
在for循环中声明的变量,只能在for循环中访问。如:for(int a;a<5;a++){...}
只有在{}里边访问a才不会报错.
9.补充
Java遵循就近原则。
类体中不能直接编写java语句,除声明变量外。
有了变量的概念后,内存空间就得到了重复使用。
4.数据类型
1.数据类型图
注意:1.小数数字默认为double类型,所以float的值必须+F/f。
2.char类型的值用**单引号(’’)**括起来。
3.boolean的值只能是true(真的)或false(假的)
4.取值范围:
byte:-128~127
int:-2147483648~2147483647
char:0~65535
short:-32768~32767
5.取值范围的大小排序:
byte<short<int<long<float<double
6.1字节=8位(bit)
7.数字字面量:程序中的数字
整数数字默认是int类型
小数数字默认是double类型
2.数据类型的作用
Java语言是强类型语言
每一个数据都有相关的类型,不同的数据类型的数据占用的空间大小都不同。
数据类型的作用就是指导JVM在运行时给该数据分配多大的内存空间。
3.Java数据类型的分类
Java的数据类型分为两大类:基本数据类型:int、boolean、float等。
引用数据类型:类、接口、数组、字符串等。
4.基本数据类型
基本数据类型分为四大类,共八种:
分类 | 标识符 |
---|---|
整数型 | byte、short、int、long、 |
浮点型 | float、double |
布尔型 | boolean |
字符型 | char |
5.八种基本数据类型占用空间的大小:
类型 | 名字 | 占用存储空间 | 表数范围 | 比特位 |
---|---|---|---|---|
byte | 字节型 | 1字节 | -128127(-2的7次方2的7次方-1),共256个 | 8 |
short | 短整型 | 2字节 | -2的15次方~2的15次方-1 | 16 |
int | 整型(默认) | 4字节 | -2的31次方~2的31次方-1 | 32 |
long | 长整型 | 8字节 | -2的63次方~2的63次方-1 | 64 |
float | 单精度浮点型 | 4字节 | 32 | |
double | 双精度浮点型(默认) | 8字节 | 64 | |
boolean | 布尔型 | 1字节 | 8 | |
char | 字符型 | 2字节 | 0~65535 | 16 |
解释:1.字符型和字符串型的区别:
字符串不属于基本数据类型,属于引用数据类型;
字符使用单引号(’’);字符串使用双引号("")。
2.字节(byte):
1Byte=8 bit (1个字节=8个比特,其中一个比特位表示一个二进制位(0/1))
3.boolean类型:单独使用4字节(底层用int表示)
数组使用1字节(底层用byte数组表示)
6.Java基本数据类型之间的转换(数值型的转换)
取值范围:byte<short<int<long<float<double
分为三种:
1.自动转换:取值范围小转为取值范围大
如:byte m=100; double n=m;
2…强制转换:取值范围大转为取值范围小
语法:数据类型 变量 = (目标类型)数据;
如:double u=123.123; byte v=(byte)u;
3.特殊点(面试题)
//案例一:
byte b1 = 1;//1为int类型的数字字面量,但1在byte类型的范围内,就直接赋值
//byte b2 = 128;//128为int类型的数字字面量,但128不在byte类型的取值范围内,所以报错
byte b2 = (byte)128;
//128 - int类型 - 4字节 - 32位 0000,0000,0000,0000,0000,0000,1000,0000
//(byte)128 - byte类型 - 1字节 - 8位 1000,0000
System.out.println(b1);
System.out.println(b2);
//案例二:
//int i = 12345678901;
//整数数字默认是int类型的数字字面量,但是12345678901超过了int类型的最大取值范围,所以报错
//案例三:
//long 11 = 12345678901;
//12345678901默认是int类型的数字字面量,但是12345678901超过了int类型的最大取值范围,所以报错
long l2 = 12345678901L;
//12345678901L认为是long类型的数字字面量
//案例四:
float f1 = 1;
//int<float,自动转换,不报错
//float f2 = 1.0;
//double>float,不能自动转换,报错
//解决方案1
//float f2 = (float)1.0;
//解决方案2
float f2 = 1.0F;
System.out.println(f1);
System.out.println(f2);
//案例五:
//boolean类型与其他类型不兼容
boolean bool = true;
//int i = (int)bool;//报错
//案例六:
char c = 'a';
int i = c;//获取该字符的ASCII码
System.out.println(i);//97 ASCII码
7.字符编号
其他基本类型表示的都是数字,就可以正常转换的。但char类型表示的是文字,文字和二进制之间默认情况下是不存在转换关系的,为了实现文字,就需要人为制定对照关系:字符编码。如支持英文的字符编码为ASCII码。