第一章 Java基础知识
1.1 基础常识
常用的DOS命令
盘符:: 切换盘符
cd 文件夹名/路径 :进入指定文件夹
cd … : 进入上级目录
cd / : 进入根目录
dir :查看目录
md 文件名 :创建文件夹
copy con 文件名 : 创建文件
echo 文件内容(ctrl z) 文件名 : 创建文件
rd 文件名 : 删除空文件夹
rd /s : 询问删除文件夹
rd /s /q : 暴力删除文件夹
del : 删除文件
ipconfig : 查看ip
cls :清屏
exit :退出dos命令行
1.2 Java语言概述
java语言是面向对象的,跨平台的语言,java编写的程序可以运行在任何的操作系统上,每一个操作系统上都有相应的不同版本的jvm虚拟机。
jdk : java开发工具包,包括jre和开发所需的工具包
jre : Java运行环境,包括jvm和java云新房所需要的核心类库
jvm : java虚拟机(一个假想计算机,可处理java程序)
java语言的执行机制: 将源文件(*.java)先编译成平台中立的字节码文件(.class),再将字节码文件进行 解释执行
1.3 Java语言的环境搭建
配置环境变量
JAVA_HOME:Java相关环境执行命令时需要 的目录。(D:\Java\jdk1.8.0_162)
path:windows系统执行外部命令时要搜寻的路径,上移到最顶层(%JAVA_HOME%\bin)
path是windows系统执行命令时要搜寻的路径。配置path的目的是为了在控制台的任何文件路径下,都可以调用jdk指定目录下的所有指令
检验是否成功 :win+r 输入cmd 打开控制台 :
输入javac –version 和java -version
1.4 Java的第一个程序HelloWord
class FirstTest{
public static void main(String[] args){
System.out.println("HelloWorld!");
}
}s
1.5 注释
单行注释 //
多行注释 /* */
文档注释 /** */
第二章 数据类型
2.1关键字
关键字是指被java语言赋予的,具有特定含义的单词。如class,static,public等。
注意事项:
goto和const这两个作为保留字使用,不是关键字
2.2 标识符
1.针对包,类,接口,方法,变量,常量等起名字的字符序列;
2.标识符的组成:
1)26个英文字母(大小写)
2)数字字符
3)符号(下划线)
4_$符号
5)严格区分大小写的
3.给类,接口起名字是相同:
如果是一个单词:首字母大写,其余小写
如果是多个单词组成:每一个单词首字母都大写,其余小写(大驼峰命名法)
4.给方法和变量起名字的规则:
如果是单个单词 :字母全部小写
如果是多个单词:第一个单词字母全部小写,从第二个单词开始,每个单词首字母大写,其余小写(小驼峰命名法)
5.给常量命名的规则:(推荐多个单词)
如果是单个单词:字母全部大写
如果是多个单词:每个单词字母大写,单词和单词使用下划线隔开
2.3 常量
在程序执行过程中,其值不发生改变的量
1.分类
1)字面值常量
整数常量、小数常量、字符常量、字符串常量、布尔常量、空常量
//整数常量
System.out.println(100) ;
//小数常量
System.out.println(3.1415926) ;
//字符串常量
System.out.println("hellWorld") ;
//字符常量
//当字符单独使用的时候,直接字符本身'a','A','0'
//但是如果字符参与运算:找一个对应的ASCII码表的固定值
System.out.println('a') ;
System.out.println('A') ;
System.out.println('0') ;
//'a':97 'A':65 '0':48
System.out.println('a'+1) ;//'a'---->ASCII码表的值 97 b:98
System.out.println('A'+1) ;//'A' :65 B:66
System.out.println('0'+1) ;//'0':48 '1':49
//布尔常量
System.out.println(true) ;
System.out.println(false) ;
//空常量
String s = null ;
System.out.println(s) ;
2)自定义常量
2.进制也属于常量
2.4 变量
在程序执行过程中其值发生改变的量。
1.分类 :
1)基本数据类型
整数类型(默认int):int、short、long、byte
注:long m=12L;
浮点类型(默认double):float、double
注:float f=3.14F;
字符类型 :char
布尔类型:boolean
2)引用数据类型
2.变量的三要素:
1)数据类型
2)变量名称
3)初始化值
3.定义变量的注意事项:
1)同一个变量不能重复定义
2)一行也可以定义多个变量
3)变量可以直接初始化
4.注 :
1)变量要进行运算,必须保证数据类型一致
2)boolean类型不参与类型转换
5.显性转换:大类型转换为小类型
隐式转换:小类型转换为大类型,char、byte、short在参与运算的时候会自动转换为int型
byte的取值范围是-128~127
2.5 常见进制及其相互转换
1.常见进制:二进制,八进制,十进制,十六进制
二进制:由0b开头
八进制:0-7组成,以0开头
十进制 :默认进制
十六进制 :由0-9及a-f组成,以0x开头
2.进制之间的相互转换
1)二进制-八进制
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cWPgHMom-1626005448401)(D:\QF_workspace\第一章 Java基础知识.assets\image-20210710143655997.png)]
2)二进制-十进制
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UaI2Yg04-1626005448403)(D:\QF_workspace\第一章 Java基础知识.assets\image-20210710144216005.png)]
第三章 运算符
3.1 逻辑运算符
1.基本逻辑运算符
逻辑单与: & 并列关系(满足全部条件)
有false,则false
逻辑单或: | 或的关系(满足一个条件即可)
有true,则true
逻辑异或: ^
相同则为false,不同则为true
逻辑非: ! 非true,则false;非false则true
偶数个非是他本身
2.扩展的逻辑运算符
逻辑双与&&
逻辑双或:||
逻辑单与&和逻辑双与&&的区别?
共同点:都是能够表述"并列"关系
不同点: 逻辑单与&:无论左边的表达式是true还是false,右边都要执行
逻辑双与&&:具有短路效果,左边达式如果是false,则右边就不执行了
逻辑双||: 左边的表达式如果是true,则右边不执行了
只要有逻辑并列判断,优先采用的逻辑双与&&(或的关系判断:使用双或||)
执行效率高!
3.2位运算符
位运算操作的都是具体的数据值
基本的位运算符号:
1.位与: & 有0,则0
3 & 4
3 00000000 00000000 00000000 00000011
4 00000000 00000000 00000000 00000100
& -------------------------------------------------
00000000 00000000 00000000 00000000
结果:0
2.位或: | 有1,则1
3 | 4
3 00000000 00000000 00000000 00000011
4 00000000 00000000 00000000 00000100
| -------------------------------------------------
00000000 00000000 00000000 00000111
结果:7
3.位异或: ^ 相同则为0,不同则为1 (一个数据被另一个数据位异或两次,其值是他本身)
3 00000000 00000000 00000000 00000011
4 00000000 00000000 00000000 00000100
^ -------------------------------------------------
00000000 00000000 00000000 00000111
结果:7
4.反码 : ~:按位取反:0变1,1变0
~3
00000000 00000000 00000000 00000011 (补码进行计算)
~
----------------------------------------------------
11111111 11111111 11111111 11111100 (补码)
最高符号位 数值位
1 1111111 11111111 11111111 11111100 补码
- 1
---------------------------------------------------------------------
1 1111111 11111111 11111111 11111011 反码
1 0000000 00000000 00000000 00000100 原码
结果:-4
其他的运算符号:位移符号
<<:左移动
左移的特点:
<<:将左边的数据乘以2的移动次幂
>>:右移动
右移的特点:
>>:将左边的数据除以2的移动次幂
>>>:无符号右移
3.3 三目运算符
格式:
(表达式)? 执行true的结果:执行false的结果;
执行流程:
判断表达式是否成立,如果成立则执行第一个
如果不成立,则执行第二个
3.4 键盘录入
jdk类:java.util.Scanner :一个简单的文本扫描器
使用步骤
1.导包: 在java语言中:只要不是java.lang包下的类都需要导入
import java.util.Scanner;
2.固定格式: 创建键盘录入对象(文本扫描器对象)
Scanner 对象名 = new Scanner(System.in) ;
3.开始录入数据:
public int nextInt():录入下一个int类型
int 变量名 = 对象名.nextInt() ;
java.util.Scanner类中:提供一个功能:
public String nextLine();录入String类型
4.使用变量
注:键盘录入的细节:
如果先录入int,在录入String,会漏掉第二个数据String
原因就是 输入回车符号-->才能录入数据;回车符号---> (换行)
方案1:在录入字符串之前,新创建一个键盘录入对象
方案2:Scanner类提供了这个功能:
public String next():录入一个字符串 (非正式用法)
第四章 流程控制
流程控制语句:
1.顺序结构语句
进入到主程序之后,main方法被jvm调用之后
代码依次由上而下进行执行!
2.选择结构语句
if语句
switch语句
3.循环结构
for
while
do-while语句
4.1 顺序结构
代码依次由上而下进行执行
4.2 选择结构
1.if语句
格式1:
if(表达式){
语句;
}
执行流程:
1)先判断表达式是否成立,
2)如果成立,执行语句内容
3)不成立则不执行
格式1是针对单个条件进行判断
格式2:
if(表达式){
语句1;
}else{
语句2;
}
执行流程:
1)首先判断表达式是否成立,
2)如果成立,则执行语句1;
3)不成立执行语句2
格式2是针对两个条件进行判断
if格式2和三元运算符的区别:
if语句格式2:相对三元运算符:范围更大:流程控制语句,既可以操作输出语句也可以操作具体的数据值
三元运算符:只能操作具体的数据(int,String字符串数据...)
三元能够实现的,一定能够使用if格式2
但是反之,if能够实现,三元运算符不一定能够实现
一般采用if格式2.
if格式2的嵌套
if(表达式1){
if(表达式2){
语句1;
}else{
语句2;
}
}else{
if(表达式3){
语句3;
}else{
语句4;
}
}
针对多个条件进行判断
格式3
针对多种情况进行判断
if(表达式1){
语句1;
}else if(表达式2){
语句2;
...
}else{
语句n;
}
执行流程:
1)首先判断表达式1是否成立;如果成立,则执行语句1;
2)不成立,继续判断表达式2是否成立,成立,执行语句2
...
...
如果上面都不成立,最终执行else里面语句;
2.switch语句
表达格式:
switch(表达式){
case 值1:
语句1;
break;
case 值2:
语句2;
break;
...
default:
语句n;
break;
}
执行流程:
1.使用switch表达式的值与case值匹配
2.若与case值匹配,则执行相应的case语句
3.若有break,则直接跳出switch
若没有,则继续往下执行
4.若switch表达式的值与case值没有匹配的,则执行default
注意事项:
1.case值只能是常量,不能是变量
2.case语句后必须要有break,若没有,会有“case穿透”、
3.default语句可以在程序的任何一个地方
switch语句中的表达式可以是什么样的数据类型:
基本数据:int,byte,short,char
JDK5以后可以跟枚举 enum
JDK7以后可以跟String类型
4.3 循环结构
1.for循环
for(条件1;条件2;条件3)
{
循环体;
}
执行顺序:先执行条件一,再看条件一是否满足条件二的判断,如果满足则进入循环,反之则不进入循环,如果进入循环里则执行循环体里面的内容,最后再执行条件三。
一般for循环样式为
for(var i=0;i<10;i++){
//循环体
}
双层for循环
for (条件一; 条件二; 条件三) {
//循环体
for (条件四; 条件五; 条件六) {
//循环体二
}
}
2.while循环
while (条件) { 满足条件就执行 }
注:因为满足条件就执行,所以我们写的时候一定要注意,就是设定一个边界值,不然就一直循环下去了
3.do while循环
do
{
循环体;
}while(条件)
跟while循环相似,只是do while循环是先执行一遍循环体,再判断条件,若条件成立则继续执行。
结构
1.for循环
for(条件1;条件2;条件3)
{
循环体;
}
执行顺序:先执行条件一,再看条件一是否满足条件二的判断,如果满足则进入循环,反之则不进入循环,如果进入循环里则执行循环体里面的内容,最后再执行条件三。
一般for循环样式为
for(var i=0;i<10;i++){
//循环体
}
双层for循环
for (条件一; 条件二; 条件三) {
//循环体
for (条件四; 条件五; 条件六) {
//循环体二
}
}
2.while循环
while (条件) { 满足条件就执行 }
注:因为满足条件就执行,所以我们写的时候一定要注意,就是设定一个边界值,不然就一直循环下去了
3.do while循环
do
{
循环体;
}while(条件)
跟while循环相似,只是do while循环是先执行一遍循环体,再判断条件,若条件成立则继续执行。