- 一. 标识符
- 二. 关键字
- 三. 变量
- 四. 数据类型
- 1. 介绍
- 2. 整型
- 3. 浮点型
- 4. 局部变量的储存方式
- 5. 字符型
- 5.1 转义字符(如`\n`)
- 6. 字符串
- 7. 布尔类型
- 8. 变量的综合应用
- 五. 类型转换
- 六. 常量
- 比如类名,变量名就是标识符
- 标识符由字母、数字、下划线和$组成,且不能以数字为开头
- 区分大小写
- 标识符不能是java关键字和保留字
- 反应其作用
- 举例标识符:
Hello, hello_word, _hello, a
下图的紫色部分为关键字,关键字是有特殊含义的字符串,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.23
4. 局部变量的储存方式
- 将数据按照作用进行分类:类级、对象实例级、方法级、块级
- 方法级的变量又称为局部变量
- 局部变量的存储方式:在内存的占中申请一个空间来存储数据
- 字符型字面值用单引号内的单个字符表示(单引号内只能有一个值)。如
'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是十六进制
\n
)
转义字符 | 描述 |
---|---|
\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;
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)