2_Java 基础
Java基础
Java 语言的书写格式(约定成俗)#
-
左大括号前面有空格
-
左大括号后要换行缩进
-
左大括号(闭)与句头对其
-
方法和程序块之间加空行让程序看起来清晰
-
运算符两侧加空格 3 + 4 = 7
-
汉字和英文字母之间加空格(为了显示更加清晰)
class HelloWorld { Public static void main(String[] args) { System.out.println("Hello World!"); int a = 10 + 5; } }
1 注释#
-
什么是注释?
用于解释说明程序的文字 (增加代码的可读性)
-
注释的分类
a.单行注释 //
b.多行注释 /* */
c.文档注释 /** */
-
注释的作用
a. 解释说明程序 (提高我们的阅读性)
b. (排错) 帮助我们调试错误
2 标识符、关键字#
2.1 关键字#
被 Java 语言赋予特定含义的单词,组成关键字的字母全部小写,是有特别意义的标识符,有时又叫保留字,还有特别意义的变量。
Java 所有组成部分都需要名字
2.2 标识符命名规则#
标识符:程序员自己定义的名字,类名、接口名、变量名、方法名等,都称为标识符。
标识符组成:
标识符由字母(A-Z,a-z)、数字(0-9)、下划线 “_” 组成,并且首字符不能是数字,但可以是字母或者下划线。
注意事项:
- 不能使用关键字
- 不能以数字开头
- 区分大小写(对大小写敏感)
命名规则:
类型 | 约束 | 例 |
---|---|---|
项目名 | 全部小写,,多个单词用中划线分隔 ‘-’ | spring-cloud |
包名 | 全部小写 | com.alibaba.blog |
类或接口名 | 单词首字母大写(驼峰命名) | Feature, ParserConfig,DefaultFieldDeserializer |
变量名、方法名 | 首字母小写,多个单词组成时,除首个单词,其他单词首字母都要大写 | password, userName,read(), readObject(), getById() |
常量名 | 全部大写,多个单词,用'_'分隔 | CACHE_EXPIRED_TIME |
3 数据类型#
3.1 详解#
3.1.1 强弱类型语言区别:#
强类型语言:
- 要求变量的使用严格符合规定,所有变量都必须先定义后才能使用
- 当你定义一个变量是某个类型,如果不经过代码显示转换(强制转换)过,它就永远都是这个类型,如果把它当做其他类型来用,就会报错。
弱类型语言:
- 你想把这个变量当做什么类型来用,就当做什么类型来用,语言的解析器会自动(隐式)转换。
3.1.2 Java 的数据类型分为两类#
例程:
public clalss Demo02 {
public static void main(String[] args) {
// 八大基本数据类型
// 整数
int num1 = 10; //最常用
byte num2 = 20;
short num3 = 34;
long num4 = 24L; //Long类型要在数字后面加个L (便于区分)
//小数:浮点数
float num5 = 34.2f; // float类型要在后面加f
double num6 = 2.433424;
//字符
char c1 = 'a';
char c2 = '中';
//String不是关键字,它是一个类
//布尔值 是非
Boolean flag = true;
}
}
3.1.3 什么是字节?#
- 位(bit):是计算机 内部数据 储存的最小单位,11001100是一个八位二进制数据
- 字节(byte):是计算机中 数据处理 的基本单位,习惯上用大写B来表示
- 1B(byte,字节) = 8 bit(位)
- 字符:是指计算机中使用的字母、数字、字和符号
3.2 数据类型扩展&面试题#
3.2.1 整数拓展#
//整数拓展: 进制 二进制0b 十进制 八进制0 十六进制0x
运行后转成10进制
int i = 10;
int i2 = 010; //八进制0
int i3 = 0x10; //十六进制0x 0~0 A~F
System.out.pritln(i);
System.out.pritln(i2);
System.out.pritln(i3);
3.2.2 浮点数拓展(银行业务怎么表示?钱)#
//float 有限 舍入误差 大约 接近但不等于
//double
float f = 0.1f; // 0.1
double d = 1.0/10; // 0.1
System.our.println(f==d); //做一个判断 false
float d1 = 342434;
float d2 = d1 + 1;
System.out.println(d1==d2);// true
所以我们得出了一个结论:
// 最后不用使用浮点数进行比较
// 最后不用使用浮点数进行比较
// 最后不用使用浮点数进行比较
/*
银行业务
如果需要进行计算,且不能有误差,那好
有一个Java写好的类BigDecimal类 数学工具类
就用它去比较
就不用float表示了了
*/
System.out.println();
3.2.3 字符拓展#
char c1 = 'a';
char c2 = '中';
System.out.println(c1);
System.out.println((int)c1); // 强制转换
System.out.println(c2);
System.out.println((int)c2); // 强制转换
//强制转换可以把字符转换为数字
所有的字符的本质还是数字
//编码 Unicode表: (97 = a 65 = A) 2个字节
// 0-65536 Excel 2^16 = 65536
//转义字符
\t 制表符
\n 换行
3.2.4 布尔值扩展#
boolean flag = true;
if(flag = true){} // 新手
if(flag){} // 老手 不要true也知道是true了
java有一句话
Less is More! 代码要精简易读!(高手的境界)
4 类型转换#
由于 Java 是强类型语言,所以进行运算的时候要进行类型转换
// incompatible 不相容的,不兼容的
// required 需要
// Found 找到
// 强制转换 (类型)变量名 高-->低 内存溢出 精度问题
// 自动转换 低-->高
高-->低
int i = 128;
byte b = (byte)i; // 内存溢出
System.out.println(i);
System.out.println(b);
结果:
128
-128
高-->低
System.out.println((int)23.7); // 23 丢失精度
System.out.println((int)34.43f); // 34
注意点:
1. 不能对布尔值进行转换
2. 不能把对象类型转换为不相干的类型
3. 在把高容量转换到低容量的时候,强制转换转换的时候可能存在内存溢出,或者精度问题!
//注意
public static void main(String[] args) {
//操作数比较大的时候,注意溢出的问题
//JDK7 新特性,数字之间可以用下划线分割
int money = 10_0000_0000;
int years = 20;
int total = money * years; //-1474836480计算的时候已经溢出了
//解决
long total2 = ((long) money) * years;
System.out.println(total2);
// 用L 小写l会看成1
}
5 变量、常量、作用域#
5.1 变量#
变量是什么:就是可以变化的量!
Java 变量是程序中最基本的存储单元,其要素包括变量名,变量类型,作用域。
注意事项:
- 每个变量都有类型,类型可以是基本数据类型,也可以是引用数据类型
- 变量名必须是合法的标识符
- 变量声明必须是完整的语句,所以必须以分号结尾
5.2 变量的作用域#
-
类变量(会随着类存在和消失,在本类中的方法可以直接调用)
-
实例变量(在方法的外面,类的里面 ;从属于对象,必须通过类创建对象,然后调用哦)
-
局部变量(写在方法里的,必须声明和初始化值,只在()内有用)
public class A {
static int allClicks = 0; // 类变量
String str = "hello world !"; //实例变量
//布尔值,默认是false
// 除了基本数据类型,其余的默认值都是null
public void main() {
int i = 0; //局部变量
}
}
5.3 常量#
常量(Constant):初始化(initialize)后不能再改变值!
所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。
常量一般使用大写字符
// final 常量名 = 值;
// final double PI = 3.14;
public class A {
//修饰符,不存在先后顺序
static final double PI = 3.14;
public static void main(String[] args) {
System.out.println(PI);
}
}
6 基本运算符(operator)#
- 算数运算符:+,-,*,/,%,++,--
- 赋值运算符:=
- 关系运算符:> , < , >=, <=, ==, !=, instanceof(面向对象)
- 逻辑运算符:&& || !
- 位运算符:&,|,^, ~ ,>>, <<, >>>(了解!!)
- 条件运算符:?:(偷懒的)
- 扩展赋值运算符: +=,-=,*=,/=
7 自增、自减运算符,初识 Math 类#
public static void main(String[] args) {
// ++ -- 自增,自减 一元运算符:只需要一个操作数
int a = 3;
int b = a++; // 执行完这行代码后,先给 b 赋值,再自增
//a = a + 1;
System.out.println(a);
int c = ++a; // 执行完这行代码前,先自增,然后给 c 赋值
// 幂运算 2 * 2 * 2 = 8
double pow = Math.pow(2,3);
System.out.println(pow);
}
8 逻辑运算符、位运算符#
public static void main(String[] args) {
// 与(and)或(or)非(取反)
/*
位运算符:
A = 0011 1100
B = 0000 1101
按位与:(同真为真)11得1,其余全是0 A&B:0000 1100
按位或:(同假为假)00得0 其余全是1 A|B:0011 1101
异或: (相同为0,不同为1) A^B:0011 0001
取反: (取反) ~B:1111 1101
面试题:
2 * 8 怎样算最快? 2 << 3
位运算:效率高,是直接与底层相关
左移 <<:*2
右移 >>:/2
*/
}
9 条件运算符&三元运算符&小结#
public static void main(String[] args) {
int a = 10;
int b = 20;
a += b; //a = a + b;
a -= b; // a = a - b;
// 偷懒,让代码变得更加精简 三元运算符 ?:
// x ? y : z
// 如果 x == true,则结果为 y ,否则为 z
int score = 80;
String type = score < 60 ? "不及格":"及格"; // 必须掌握
System.out.println(type);
}
字符串连接符(注意点)
//字符串连接符 +, String
System.out.println("" + a + b); // 字符串在前面,后面的变量会拼接
System.out.println(a + b + ""); //字符串在后面,前面的变量会进行运算
10 包机制#
为了更好的组织类,Java提供了包机制,用于类名的命名空间
包的命名规则
-
包名统一使用小写,点分隔符之间有且仅有一个自然语义的英文单词或者多个单词自然连接到一块(如 springframework,deepspace不需要使用任何分割)。
-
包名统一使用单数形式,如果类命有复数含义,则可以使用复数形式。
-
包名的构成可以分为以下几四部分【前缀】【发起者名】【项目名】【模块名】。常见的前缀可以分为以下几种:
前缀名 | 例 | 含义 |
---|---|---|
indi(或onem ) | indi.发起者名.项目名.模块名.…… | 个体项目,指个人发起,但非自己独自完成的项目,可公开或私有项目,copyright主要属于发起者。 |
pers | pers.个人名.项目名.模块名.…… | 个人项目,指个人发起,独自完成,可分享的项目,copyright(版权)主要属于个人 |
priv | priv.个人名.项目名.模块名.…… | 私有项目,指个人发起,独自完成,非公开的私人使用的项目,copyright属于个人。 |
team | team.团队名.项目名.模块名.…… | 团队项目,指由团队发起,并由该团队开发的项目,copyright属于该团队所有 |
顶级域名 | com.公司名.项目名.模块名.…… | 公司项目,copyright由项目发起的公司所有 |
11 JavaDoc 生成文档#
javadoc 命令是用来生成自己的API文档的
参数信息:
@author 作者名
@version 版本号
@since 指明需要最早使用 jdk 版本
@param 参数名
@return 返回值情况
@throws 异常抛出情况
-
**使用命令行生成 javadoc 文档 ** (可在 类.java 源文件夹中查看生成的 doc 文档 -- index.html)
javadoc (参数) javadoc -encoding UTF-8 -charset UTF-8 类名.java -encoding 编码格式 -charset 字符集 是为了让文章显得更优秀不出现乱码
-
使用IDEA生成 javadoc 文档

- 第一步:选择生成JavaDoc文档的范围,我只对一个源文件生成Doc,所以选择文件。
- 第二步:输出目录最好新建一个文件夹,比较有条理和整洁
- 第三步:区域设置,决定文档的语言,简体中文就是zh_CN、繁体(台湾)zh_tw、繁体(香港)zh-hk、英语(香港)en-hk、英语(美国)en-us、英语(英国)en-gb、英语(全球)en-ww
- 第四步:其他命令行参数:如果区域设置为中国,参数一般为
-encoding UTF-8 -charset UTF-8 主要意义是为了显示中文不出现乱码 - 第五步:设置完成后点击确定即可生成Doc文档
作者:走马
出处:https://www.cnblogs.com/zou-ma/p/15477871.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
本博文版权归本博主所有,未经授权不得转载
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?