- 一. 标识符
- 二. 关键字
- 三. 变量
- 四. 数据类型
- 1. 介绍
- 2. 整型
- 3. 浮点型
- 4. 局部变量的储存方式
- 5. 字符型
- 5.1 转义字符(如`n`)
- 6. 字符串
- 7. 布尔类型
- 8. 变量的综合应用
- 五. 类型转换
- 六. 常量
- 比如类名,变量名就是标识符
- 标识符由字母、数字、下划线和$组成,且不能以数字为开头
- 区分大小写
- 标识符不能是java关键字和保留字
- 反应其作用
- 举例标识符:Hello, hello_word, _hello, a$1
下图的紫色部分为关键字,关键字是有特殊含义的字符串,java还有一个保留字goto
java关键字如下图所示,图片来自百度百科
变量的三个元素:变量类型、变量名和变量值
- 变量名命名规则:
- 满足标识符命名规则
- 符合驼峰法命名规则:myStudent
- 类命名规则:
- 满足标识符命名规则
- 满足Pascal命名规则:MyStudent
| 数据类型 | 说明 | 字节(1字节8位 / 1 byte = 8 bits) | 表示范围 |
|---|---|---|---|
| byte | 字节 | 1 | [ − 128 , 127 ] [-128, 127] [−128,127] |
| short | 短整型 | 2 | [ − 32768 , 32767 ] [-32768,32767] [−32768,32767] |
| int | 整型 | 4 | [ − 2147483648 , 2147483647 ] [-2147483648,2147483647] [−2147483648,2147483647] 或 [ − 2.1 4 9 , 2.1 4 9 ] [-2.14^9,2.14^9] [−2.149,2.149]) |
| long | 长整型 | 8 | [ − 2 32 [-2^{32} [−232, 2 32 − 1 ] 2^{32}-1] 232−1] |
| float | 单精度浮点型 | 4 | 1bit(符号位) 8bits(指数位) 23bits(尾数位) |
| double | 双精度浮点型 | 8 | 1bit(符号位) 11bits(指数位) 52bits(尾数位) |
| char | 字符型 | 2 | [ − 32768 , 32767 ] [-32768,32767] [−32768,32767] |
| boolean | 布尔型 | 1 |
- float 的取值范围
这篇文章与这篇介绍了float为什么和int一样同样是4个 字节却能表示更多的数字,简单来说就是float把32位分为1bit(符号位) 8bits(指数位) 23bits(尾数位),float的指数范围为 [ − 127 , 128 ] [-127,128] [−127,128],取值范围就是 [ − 2 127 , 2 128 ] [-2^{127} , 2^{128}] [−2127,2128],精度可以表示 2 23 = 8388608 2^{23} = 8388608 223=8388608,也就是说最多表示7位,可以完整表示6位。 - double的取值范围
double是1bit(符号位) 11bits(指数位) 52bits(尾数位)
取值范围为 [ − 2 1024 + 2 1024 ] [-2^{1024} ~ +2^{1024}] [−21024 +21024]
精度可以表示 2 52 = 4503599627370496 2^{52} = 4503599627370496 252=4503599627370496,也就是最多可以表示16位,可以完整表示15位
- 整型字面值:Java中有三种表示整数的方法,八进制、十进制、十六进制
- 八进制:以0开头,包含0-7的数字(012,042)
- 十六进制:以0x或0X开头,包含0-9的数字,及字母a-f,A-F(0x123abc, 0x12AB)
- 举例123, 0123,0x123abc,0x4A, 0x123abcL(L指长整型)
- 变量声明:数据类型 变量名(=值);
- 浮点型字面值默认情况下是double类型,或末尾加d/D,比如123.456d、123.4D。若想要表示float类型,则需要在字面值后加f/F
- 变量声明
下方代码是浮点型的变量声明与示例。从中可以看出可以将float变量赋值给double(带有一个小误差),但是不能将double赋值给float
package aaa.bbb;
public class FloatDemo {
public static void main(String[] args) {
//定义一个单精度浮点型变量,存放1.23
float f = 1.23f;
//定义一个双精度浮点型变量,存放1.23
double d = 1.23f;
double e = 1.23;
System.out.println("f="+f);
System.out.println("d="+d);
System.out.println("e="+e);
}
}
f=1.23 d=1.2300000190734863 e=1.234. 局部变量的储存方式
- 将数据按照作用进行分类:类级、对象实例级、方法级、块级
- 方法级的变量又称为局部变量
- 局部变量的存储方式:在内存的占中申请一个空间来存储数据
- 字符型字面值用单引号内的单个字符表示(单引号内只能有一个值)。如'a','b'
- 定义变量:char a = 'a',char ch = 65
package aaa.bbb;
public class FloatDemo {
public static void main(String[] args) {
char a = 'a';
//这里b存的是ASCII码里的65
char b = 65;
char c='u005d'
System.out.println("a="+a);
System.out.println("b="+b);
System.out.println("c="+c);
}
}
a = a b = A c = ]
- Unicode编码:在值前加前缀u。如char c='u005d',005d是十六进制
| 转义字符 | 描述 |
|---|---|
| uxxxx | 四位16进制数所表示的符号 |
| ’ | 单引号字符(字符) |
| " | 双引号字符(字符串) |
| | | 反斜杠字符 |
| r | 回车 |
| n | 换行 |
| t | 横向跳格 tab效果 |
| b | 退格 |
- 字面值
- 不是基本数据类型,但又有相似处。字符串是类
- 双引号引起来的0个或多个字符
- 变量声明:String a = "";
- 只有true和false,0或1是不行的
- boolean b = true;
package aaa.bbb;
public class VarDemo {
public static void main(String[] args) {
//定义两个整型变量x,y
int x = 0, y = 1;
System.out.print("x = "+x+'n');
System.out.println("y = "+y);
System.out.print(x+"t"+y+'n');
System.out.print("'"+x+"'n");
//用科学计数法表示浮点数
double d1 = 1.23E5; //1.23+10^5
float f = 1.23e5f;
double d2 = .2; //0.2
}
}
五. 类型转换
-
类型转换分为自动类型转换和强制类型转换
- 顺着箭头方向的是自动类型转换,反过来需要强制类型转换
double d = 1.2; float f = (float)d;//强制转换(type)
-
例子
package aaa.bbb;
public class TypeExchange {
public static void main(String[] args) {
char c = (char)65536; //强制类型转换
int n;
n = c;//自动类型转换
c = (char)n;//强制类型转换
//整型和浮点型类型转换问题
int x = 100;
long y = x;
x = (int)y;
//long给float
float f1 = 100000000000000L;
System.out.println(f1); //1.0E14
float f2 = 101231242123123L;
System.out.println(f2); //1.01231238E14 后几位数据丢失了
}
}
六. 常量
常量使用final定义,变量名需注意要全部大写
final int n = 5; //用final来定义变量
- 例子
package aaa.bbb;
public class FinalDemo {
public static void main(String[] args) {
int m = 5;
final int N =6;
m = 10;
//N = 10; 报错The final local variable n cannot be assigned.
//It must be blank and not using a compound assignment
final double PI = 3.14; //命名是全部大写
final double MAX_V = 1;
}
}



