0731-0805
通过本周的学习,我对Java有了初步的掌握,但仍然需要不断加强实践和练习,以加深理解和熟练运用。我计划在接下来的学习中,注重编程实践,通过解决实际问题来提升自己的编程能力。
- 学习了Java的数据类型和变量:掌握了基本的数据类型(int,double,boolean等)和变量的声明与使用,了解了数据类型转换和运算符的基本使用方式。
- 深入了解了Java的流程控制结构:学习了条件语句(if-else,switch)和循环语句(for,while,do-while),并通过练习掌握了它们的基本用法和注意事项。
1.Java 快速入门
JDK下载安装
-
官网:https://www.oracle.com/java/technologies/
-
环境变量配置
-
方法一:在系统环境变量的Path里面配置JDK安装的BIN的完整目录
如:D:kaifamiao\jdk-17.0.32\bin
-
方法二:系统环境变量里先配置JAVA_HOME
变量名为:
JAVA_HOME
变量值为:
D:kaifamiao\jdk-17.0.32
然后再Path里面配置
%JAVA_HOME%\bin
-
cmd常见命令
-
JDK查看编工具和运行工具版本号的命令:
javac -version
和java -version
010203040506E: //切换到E盘 cd [目录] //进入指定的目录 cd .. //退回到上一级目录 cd / //退回到根目录 dir //显示当前目录下所有的内容 cls //清空屏幕
JDK的组成
- JVM:Java虚拟机,真正运行Java程序的地方
- 核心类库:Java自己写好的程序,给程序员自己的程序进行调用的
- JRE:Java的运行环境
- JDK:Java开发工具包(上面的所有)
javadoc命令
-
文档注释是一种特殊的注释格式,用于为 Java 程序中的类、方法、字段等元素提供文档说明。文档注释以 /** 开始,以 */ 结束,可以包含多行描述性文本和标记
-
文档注释是一种标准的注释格式,在使用工具生成 API 文档时可以被提取出来,用于生成详细的程序文档。它们提供了对代码的解释、使用示例、参数说明、返回值说明等重要信息,帮助其他开发者理解和使用代码
-
标签 作用 @author 标识一个类的作者 @param 方法的参数 @return 标明返回值类型,一般用于方法注释,不能出现在构造方法中 {@value} 显示常量的值,该常量必须是 static 属性 @since 版本号,标明从哪个版本起开始有这个函数 @version 指定类的版本 @exception 可能抛出异常的说明,一般用于方法注释 @throws 也是可能抛出异常的说明 @serial 说明一个序列化属性 @serialData 说明通过 writeObject() 和 writeExternal() 方法写的数据 @serialField 说明一个 ObjectStreamField 组件 -
javadoc 命令语法格式如下:
01 javadoc [options] [packagenames][sourcefiles]
格式说明:
(1)options 表示 javadoc 命令的选项;
(2)packagenames 表示包名;
(3)sourcefiles 表示源文件名。
2. Java基础语法
注释
1.单行注释:
// 后面根解释文字
2.多行注释
/*
这里写注释文字
可以写多行
*/
3.文档注释
/**
这里写文档注释
也可以写多行,文档注释可以利用JDK的工具生成帮助文档
*/
字面量
常用数据 | 生活中的写法 | 程序中的写法 | 说明 |
---|---|---|---|
整数 | 666,-88 | 666,-88,0 | 写法一致 |
小数 | 13.14,-5.21 | 13.14,-5.21 | 写法一致 |
字符 | A,0,我 | ‘A’,‘0’,'我 | 程序中必须使用单引号,有且仅能一个字符 |
字符串 | 开发喵 | “开发喵”,“0” | 程序中必须使用双引号,内容可有可无 |
布尔值 | 真,假 | true\false | 只有两个值,true表示真,false表示假 |
空值 | 值是null | 一个特殊的值,空值 |
变量
数据类型 变量名称 = 初始值;
标识符
- 标识符由字母( A~Z 和 a~z )、数字(0~9)、下划线(_)、美元符号($)以及部分Unicode字符集(各符号之间没有空格)组成。
- 标识符的首字母以字母、下划线或美元符号开头,后面可以是任何字母、数字、美元符号或下划线,但不能以数字开头。
- 标识符的命名不能是关键字、布尔值(true、false)和null。
- 标识符区分大小写,没有长度限制。
关键字
abstract | default | if | protected | throws |
---|---|---|---|---|
assert | do | implements | public | transient |
boolean | double | import | return | try |
break | else | instanceof | strictfp | void |
byte | enum | int | short | volatile |
case | extends | interface | static | while |
catch | final | long | super | _ |
char | finally | native | switch | |
class | float | new | synchronized | |
const | for | package | this | |
continue | goto | private | throw |
数据类型转换
自动类型转换(扩展原始转换)
多种数据类型参与运算,其结果以大的数据类型为准
byte
,short
,char
三种类型数据在和其他类型数据运算时,都会转换为int
类型再运算
强制类型转换(缩小原始转换)
目标数据类型 变量名 = (目标数据类型)被转换的数据;
运算符
运算符就是参与运算的符号。Java提供的运算符有很多种,可以分为下面几种:
- 基本算术运算符
- 自增自减运算符
- 赋值运算符
- 关系运算符
- 逻辑运算符
- 三元运算符
算术运算符
算术运算符有 + - * / % ,其中 * 表示乘 法, / 表示除法, % 表示取余数。
符号 | 作用 | 说明 |
---|---|---|
+ | 加 | 与算术的相加相同 |
- | 减 | 与算术的相减相同 |
* | 乘 | 与“X”相同 |
/ | 除 | 与“÷”相同,注意:再java中两个整数相除结果还是整数 |
% | 取余 | 获取的是两个数据做除法的余数 |
需要主义的是:
+
除了用于加法运算,还可以作连接符。+
符号与字符串运算的额时候是用作连接符的,其结果依然是一个字符串。
自增自减以运算符
++
读作自增、--
读作自减。
运算规则:
符号 | 作用 |
---|---|
自增:++ | 放在某个变量的前面或后面,对变量自身的值加1 |
自减:—— | 放在某个变量的前面或后面,对变量自身的值减1 |
赋值运算符
基本的复制运算符=
,意思是把右边的数值赋值给左边的变量。
int a = 10; //将数据10赋值给左边的变量
除了基本的赋值运算符,我们在了解一下扩展的运算符,有:+=
,-=
,8=
,/=
,%=
。
符号 | 用法 | 作用 | 底层代码形式 |
---|---|---|---|
+= | a+=b | 加后赋值 | a=(a的类型)(a+b; |
-= | a-=b | 减后赋值 | a=(a的类型)(a-b; |
*= | a*=b | 乘后赋值 | a = (a的类型)(a * b); |
/= | a/=b | 除后赋值 | a = (a的类型)(a / b); |
%= | a%=b | 取余后赋值 | a = (a的类型)(a % b); |
关系运算符
关系运算符在程序中常用于条件判断,根据条件判断的结果是true还是false,来决定 后续该执行哪些操作。
逻辑运算符
逻辑运算符在程序中常用于组合几个条件判断,根据条件判断的结果是true还是 false,来决定后续该执行哪些操作。
位运算符
在计算及内部,数据以二进制(0和1)的形式存储和处理。计算机通过数据转换为二进制形式,将其存储在内存中,并对其进行操作和计算和操作。不同的数据类型在内存中占据不同的二进制位,以便正确的表示和处理数据。
- 源码:源码是一种最简单的机器数表示法,其中最高表示符号位,其余位表示该数的二进制的绝对值。
- 反码:正数的反码与与原码相同,而负数的反码是其原码除符号位外,按位取反的结果。
- 补码:正数的补码等于其补码,而负数的补码等于其反码加1。
三元运算符
三元运算符格式:
数据类型 变量名 = 关系表达式 ? 值1 : 值2;
三元运算的执行流程:首先计算关系表达式的值,如果关系表达式的值为true,则返 回值1;如果关系表达式的值为false, 则返回值2。
运算优先级
在实际开发中,其实我们很少考虑运算优先级, 因为如果 你想让某些数据先运算,其实加 () 就可以了,这样阅读性更高。
运算符 结合性 [ ] . ( ) (方法调用) 从左向右 ! ~ ++ – +(一元运算) -(一元运算) 从右向左 * / % 从左向右 + - 从左向右 > >>> 从左向右 < >= instanceof 从左向右 == != 从左向右 & 从左向右 ^ 从左向右 | 从左向右 && 从左向右 || 从左向右 ? : 从右向左 = 从右向左
程序流程控制
3种:顺序、分支、循环
顺序结构:就是不加任何控制,代码从main方法开始自上而下执行
分支结构:就是根据条件判断是true还是false,有选择性的执行哪些代码。在Java语言中提供了两个格式if 、 switch
循环结构:就是控制某一段代码重复执行。在Java语言中提供了三种格式,for、while、do-while还有1.5新增的for-each循环,可以迭代(遍历)数组
分支结构:
if分支:
作用:是用于对条件进行判断,判断的结果只可能有两个值true或者false,然后根据条件判断的结果来决定执行那段代码。
第一种形式:
if(表达式){
代码块
}
第二种形式:
if(表达式){
代码块1
}else{
代码块2
}
第三种形式:
if(表达式1){
代码块1
}else if(表达式2){
代码块2
}else if(表达式3){
代码块3
}else{
代码块4
}
嵌套if语句:
if(表达式1){
if(表达式2){
}elese{代码块2
}
}else{
if(表达式3){
}else{代码块3
}
}
switch分支
作用:是通过比较值来决定执行哪条分支代码。
switch分支的执行流程
1.先执行表达式的值,在用这个值与case后的值进行匹配
2.与那个case后的值匹配为true就执行那个case的代码,遇到break就退出
3.如果全部case后的值与之匹配都是false,则执行default中的代码
注意:
表达式类型只能是byte、short、int、char;JDK5开始支持枚举,JDK1.7(java7)开始支持String,不支持double、float等
case给出的值不允许重复,且只能是字面量,不能是变量。
正常使用switch的时候,不要忘记写break,否则会出现穿透现象。
case穿透
当switch语句中没有遇到break,就会直接穿透到下一个case语句执行,直到遇到break为止。
switch分支特性:
1.箭头表达式
2.yield
if 、switch作用场景:
如果是对一个范围进行判断,建议使用if分支结构
- 如果是与一个一个的值比较的时候,建议使用switch分支结构
循环结构:
while(循环条件){
循环体
}
for(循环变量初始化;循环条件;改变循环变量的值){
循环体
}
for、whil使用场景:
for知道循环次数
while不知循环次数