Java基础篇02
Java标识符和数据类型
标识符
- 关键字
abstract | assert | boolean | break | byte |
---|---|---|---|---|
case | catch | char | class | const |
continue | default | do | double | else |
enum | extends | final | finally | float |
for | goto | if | implements | import |
instanceof | int | interface | long | native |
new | package | private | protected | public |
return | strictfp | short | static | super |
switch | synchronized | this | throw | throws |
transient | try | woid | volatile | while |
- Java所有的组成部分都需要名字。类名,变量以及方法名都被称为标识符。
注意点
- 所有标识符都应该以26字母,美元$,下划线_开始
- 首标识符之后由数字和26个字母以及_和$,任何字符组成
- 标识符不能以数字开头
- JAVA语言严格区分大小写
- 标识符不能包含空格
可以使用中文命名,但是不推荐使用,也不推荐使用拼音
public class Demo1 {
public static void main(String[] args) {
//合法标识符
String A1 = "合法标识符";
String a1 = "合法标识符";
String $1 = "合法标识符";
String _1 = "合法标识符";
//非法标识符
/**String 1A1 = "非合法标识符";
String A 1 = "非合法标识符";
String class = "非合法标识符";
*/
System.out.println(A1+a1+$1+_1);
}
}
数据类型
-
强类型语言:要求变量的使用要求严格符合规定,所有变量都必须先定义后才能使用
-
弱类型语言
-
Java的数据类型
- 整数类型
byte:占1个字节
short:占2字节
int:占4字节
long:占8字节
- 浮点型
float:占4字节
double:占8字节
- 字符类型
char:占2字节
-
boolean类型:占一位,其值只有true和false
-
引用类型
类
接口
数组
存储单位
位(bit):是计算机内部数据存储的最小单位(b)
字节(byte):是计算机中数据处理的基本单位(B)
字符:是计算机中使用的字母,数字,字和符号
1B=8bit
代码展示
public class Demo2 {
public static void main(String[] args) {
//数据类型
//整数类型
int a = 12;
byte b = 13;
short c = 20;
long d = 20L;//long类型要在数字后面加个L
//浮点型
float e = 1.2F;//float类型要在数字后面加个F
double f = 0.23333;
//字符型
char x = '如';
//String y = "abcd";这里String不是关键字,是类
//布尔值:判断对错
boolean flag = true;
//boolean flag = false;
System.out.println(d+" "+x+" "+flag);
}
}
/*输出结果
20 如 true
Process finished with exit code 0
*/
数据类型扩展
public class Demo3 {
public static void main(String[] args) {
//整数扩展 进制: 二进制0b 十进制 八进制0 十六进制0x
int a1 = 11;//十进制 0~9
int a2 = 0b11;//二进制,转为十进制a2 = 3 0~1
int a3 = 011;//八进制,转为十进制a3 = 9 0~7
int a4 = 0x11;//十六进制,转为十进制a4 = 17 0~9 A~F
//输出验证一下
System.out.println(a1);
System.out.println(a2);
System.out.println(a3);
System.out.println(a4);
System.out.println("=================");
/*输出结果
11
3
9
17
=================
*/
//浮点数扩展 float double 有限 离散 舍入误差
//最好完全避免使用浮点数进行比较,以后会学digdecimal数学工具类
float b1 = 0.11F;
double b2 = 0.11;
float b3 = 23333333333333f;
float b4 = b3 + 1;
//输出验证一下
System.out.println(b1);
System.out.println(b2);
System.out.println(b1 == b2);//返回boolean类型值false,说明b1不等于b2,体现精度不同
System.out.println(b3 == b4);//返回boolean值true,说明b3=b4,体现有限性
System.out.println("=================");
/*输出结果
0.11
0.11
false
true
=================
*/
//字符扩展
char c1 = 'a';
char c2 = '如';
System.out.println(c1);
System.out.println(c2);
System.out.println((int) c1);//强制转换 a转换为数字为97
System.out.println((int) c2);//强制转换
//所有的字符本质都是数字
//编码 Unicode 2字节 0~65535 2^16
// U0000~UFFFF
char c3 = '\u0061';
System.out.println(c3);//0061为16进制,转换为10进制为97,即字符a
System.out.println("=================");
/*输出结果
a
如
97
22914
a
=================
*/
//转义字符 常用:\t \n
System.out.println("hello\tworld");//相当于tab
System.out.println("hello\nworld");//相当于换行
System.out.println("=================");
/*输出结果
hello world
hello
world
=================
*/
//
String d1 = new String("hello");
String d2 = new String("hello");
System.out.println(d1 == d2);//new是创建一个新地址,所以d1和d2是不同地址
String d3 = "hello";
String d4 = "hello";
System.out.println(d3 == d4);
System.out.println("=================");
/*输出结果
false
true
=================
*/
//boolean值扩展
boolean flag = true;
if (flag == true) {
}
if (flag) {
}//以上两个if判断条件是一样的,推荐第二种写法,代码越精简越好
}
}
类型转换
public class Demo4 {
public static void main(String[] args) {
//类型转换
int i = 128;
byte b = (byte)i;//内存溢出,强制转换
//byte,short,char >int >long >float >double优先级比较由小到大
//优先级高转换低:强制转换 (类型)变量名
//优先级低转换高:自动转换
double d = i;//自动转换
System.out.println(i);
System.out.println(b);
System.out.println(d);
/*
注意点:
1.不能对boolean进行强制转换
2.不能把对象类型转化为不相干的类型
3.强制转换,会出现内存溢出或者精度问题
*/
System.out.println("===============");
System.out.println((int)23.7);
System.out.println((int)-34.1F);
System.out.println("===============");
char c = 'a';
int x = c+1;//自动转换
System.out.println(c);
System.out.println(x);
System.out.println((char)x);//强制转换
System.out.println("===============");
//操作比较大的数,注意溢出问题
int m = 10_0000_0000;//数字之间可以用下划线分隔
System.out.println(m);
int y = 20;
int total = m*y;//溢出
System.out.println(total);
long total2 = m*((long)y);//先把一个数转化成long类型
long total3 = m*y;//默认是int类型,转换前已经存在问题?
System.out.println(total2);
System.out.println(total3);
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!