Java基础:注释、标识符、数据类型、类型转换
注释
注释不会被执行
写代码需要写注释,注意代码规范
-
单行注释
//注释内容
-
多行注释
/* 这里可写 多行注释内容 */
-
文档注释
文档注释中的内容可读
/**
* @Description xxx
* @Author chachan53
*/
标识符
- 关键字
- Java所有的组成部分都需要名字,类名、变量名以及方法名都被称为标识符
标识符注意点
- 所有的标识符都应使用字母、美元符($)、下划线(_)开头;
- 首字母后可以使用字母、美元符、下划线和数字
- 不能使用关键字作为变量名或方法名
- 大小写敏感:有大小写差异的标识符会被认定为两个不同的标识符,如Age和age是两个不同的标识符
- 可以中文命名,但不建议
数据类型
- 强类型语言:要求变量的使用要严格符合规定,所有变量必须先定义才能使用(安全性高,速度蛮)
- 弱类型语言
字节
- 位(bit):计算机内部数据存储的最小单位,11011001是一个八位二进制数
- 字节(byte):计算机中数据处理的基本单位,习惯上用大写B表示,1 B(byte,字节) = 8 bit(位)
- 字符:计算机中使用的字母、数字、字和符号
- 1 bit表示1位
- 1 Byte表示一个字节,1 B = 8 b
- 1024 B = 1 KB
- 1024 KB = 1 M
- 1024 M = 1 G
Java的数据类型
- 基本类型(primitive type)
public class Demo02 {
public static void main(String[] args) {
//整数
int num1 = 10; //最常用
byte num2 = 20;
short num3 = 30;
long num4 = 30L; //Long类型要在数字后面加L
//浮点数(小数)
float num5 = 50.1F; //float类型要在数字后加F
double num6 = 3.144543534543534;
//字符
char name = 'A'; //字符表示一个字,只能赋一个字,注意使用单引号
//字符串,String不是关键字,是类
//String aname = "aha";
//布尔值,值只有true和false
boolean flag = true;
}
}
-
引用类型
如String
整数拓展
- 二进制:数字前加0b
- 十进制
- 八进制:数字前加0
- 十六进制:数字前加0x;09,AF
int num1 = 10; //输出结果为10
int num2 = 0b10; //输出结果为2
int num3 = 010; //输出结果为8
int num4 = 0x10; //输出结果为16,0~9,A~F
System.out.println(num1);
System.out.println(num2);
System.out.println(num3);
System.out.println(num4);
输出结果为
10
2
8
16
浮点数拓展
- float:长度有限,数字是离散的,具有舍入误差,其存储的数字是大约的,接近但不等于原值
- double
- 相同值的float和double类型的数不相等:
float f = 0.1f; //0.1
double d = 1.0/10; //0.1
System.out.println(f==d); //false
输出结果为false
- 浮点数的值不是原值
float d1 = 23423423472389472389472f;
float d2 = d1 + 1;
System.out.println(d1==d2); //true
输出结果为true
最好完全避免使用浮点数进行比较
最好完全避免使用浮点数进行比较
最好完全避免使用浮点数进行比较
字符串扩展
所有的字符本质还是数字
Unicode编码,2字节,范围为0-66535,按照ASCII表对应数字(U0000 - UFFFF)
char c1 = 'a';
char c2 = '中';
char c3 = 65; //直接输入数字,内容为表中对应内容
System.out.println(c1);
System.out.println((int)c1); //强制转换
System.out.println(c2);
System.out.println((int)c2); //强制转换
System.out.println(c3);
输出结果为:
a
97 //输出被转换为字符对应的数
中
20013 //输出被转换为字符对应的数
A //输出了数字对应的字符
转义字符
- 制表符
\t
:效果类似于Tab - 换行符
\n
:换行
String
String的new和直接赋值存在区别
String sa = new String("Hello,world");
String sb = new String("Hello,world");
System.out.println(sa == sb); //false
String sc = "Hello,world";
String sd = "Hello,world";
System.out.println(sc == sd); //true
-
new创建是新的空间,指向的地址不同
-
直接赋值,在内存的同一地址取出,指向的地址和内容都相同
-
可以用equals比较字符串的内容
布尔值扩展
//布尔值
boolean flag = true;
if(flag == true ){ }
if(flag){ } //更加精简
在对布尔值的判定中,if括号中的内容默认为true判定执行,可以精简代码
less is more
类型转换
低———————————————————>高
byte, short, char -> int -> long -> float -> double
-
运算中不同类型的数据先转化为同一类型,然后进行运算
-
强制转换 (类型)变量名 高->低
-
自动转换 低->高
注意点
- 不能对布尔值进行转换
- 不能把对象类型转换为不相干的类型
- 在把高容量转换到低容量的时候,强制转换
- 转换的时候困难存在内存溢出,或精度问题
内存溢出1:
int i = 128;
byte b = (byte)i; //输出结果为-128,表示范围到127,内存溢出,结果错误
double d = i; //无需强制转换
内存溢出2:先用原类型计算,后再转换变量类型
//JDK7新特性,数字之间可以下划线分割
int money = 10_0000_0000;
int years = 20;
int total = money*years; //结果为-1474836480,溢出
long total2 = money*years; //结果仍为-1474836480,在结果转换为long前,首先使用int类型计算得到结果
long total3 = money*((long)years); //结果为20000000000,先把一个数转化为long
使用l时用大写L
精度问题:
System.out.println((int)23.7); //23,省去小数,而不是四舍五入
System.out.println((int)-45.98); //-45
数字字符转换
同级数字和字符转化时以编码形式转换
char c = 'a';
int i1 = c + 1 ;
System.out.println(i1); //98
System.out.println((char)i1); //b
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现