第一章 走进JAVA编程世界
一、JAVA怎么下载
1、先打开安装包下载一个jdk一个jre两个文件夹
2、打开系统高级设置,环境变量新建两个
(1) 变量名 JAVA_HOME
变量值 C:\Program Files\Java
(2)变量名 CLASSPATH
变量值 % JAVA_HOME%\lib\dt.jar;% JAVA_HOME%\lib\tools.jar
3、退出,在环境变量中找到path双击打开,新建两个
(1) % JAVA_HOME%\bin
(2) % JAVA_HOME%\jar\bin
4、退出 win+r 输入cmd
输入java-version 查看当前java版本号是否一致
5、打开使用
二、第一个java程序
1、java程序结构
public class class15 {
System out println{"Hello word!"}
}
public 公用的
class 类名
class 15 类的名称
System out println{“Hello word!”}这行代码表示从控制台输出Hello word!
2、代码注释
// 单行注释
/* … */ 多行注释
/** … */ 被注释成程序的正式文件 包含文件的名称 作者 日期 版本信息等
3、常见错误
(1)环境变量设置错误 需重新检查JDK环境变量配置是否正确
(2)编译错误
1、句尾的分号必须写
2、文件名需要与类名一致
3、void不可少
4、严格区分字母大小写
(3)运行错误
1、找不到运行文件 ➡️ 输入了不正确的类名
2、无法发现main() 方法 ➡️ 注意main的书写格式
第二章 变量、常量和运算符
一、java常用基本数据类型
数据类型 | 关键字 | 占用内存空间 | 取值范围 |
---|---|---|---|
布尔值 | boolean | 1 | true、false |
字节值 | byte | 1 | -128~127 |
字符型 | char | 2 | 0~(2的16-1) |
短整型 | short | 2 | -2的15~(2的15-1) |
整型 | int | 4 | -2的31~(2的31-1) |
长整型 | long | 8 | -2的63~(2的63-1) |
单精度浮点型 | float | 4 | 1.4013E-45~3.4028E+38 |
双精度浮点型 | double | 8 | 4.9E-324~1.7977E+308 |
八种基本数据类型:
数值型 整型(byte、short、int、long) 浮点型(float、double)
字符型(char)
布尔型(boolean)
二、如何使用变量
先声明,并初始化后才可以使用
1、声明变量
String name; //姓名
int age; //年龄
double money; //金额
boolean vip; //是否会员
2、初始化变量
name="张三";
age=23;
money=2323.1;
vip=true;
变量名中不能包含%
三、常量
final 数据类型 常量名;
final 定义的常量只能被赋值一次,一旦被赋值,就不能再更改
final int DAYOFYEAR=365; //一年包含的天数
final int HOUROFDAY=24; //一天包含的小时数
四、常用的算术运算符
算术运算符 | 名称 | 作用 | 示例 |
---|---|---|---|
+ | 加法 | 求和 | 1+1=2 |
- | 减法 | 求差 | 6-4=2 |
* | 乘法 | 求乘积 | 2*3=6 |
/ | 除法 | 求商 | 9/3=3 |
% | 求余 | 求余数 | 6%4=2 |
++ | 自加 | 操作数加一 | int x=6 x=x+1 |
– | 自减 | 操作数减一 | int x=6 x=x-1 |
五、扫描器
Scanner input=new Scanner(System.in);
System.out.println("请输入你的姓名:");
String name= input.next();
数据接收类型
String | next() |
---|---|
int | next Int() |
double | next Double() |
Scanner类的常用方法
方法 | 描述 |
---|---|
boolean hasNext() | 判断输入的数据是否为String类型 |
boolean hasNextInt() | 判断输入的数据是否为Int类型 |
boolean hasNextDouble() | 判断输入的数据是否为double类型 |
boolean hasNextBoolean() | 判断输入的数据是否为boolean类型 |
六、关系运算符
关系运算符 | 说明 | 举例 | 结果 |
---|---|---|---|
> | 大于 | x>y | 如果x>y成立,为真,否则为假 |
< | 小于 | x<y | 如果x<y成立,为真,否则为假 |
>= | 大于等于 | x>=y | 如果x>=y成立,为真,否则为假 |
<= | 小于等于 | x<=y | 如果x<=y成立,为真,否则为假 |
== | 等等于 | x==y | 如果x==y成立,为真,否则为假 |
!= | 不等于 | x!=y | 如果x!=y成立,为真,否则为假 |
第三章 if选择结构
一、流程
今天是不是好天气?
如果是去爬山
如果不是去看电影
二、if选择结构的应用
简单if选择结构:用来处理单一或组合条件的情况
public class text {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("请输入你的年龄:");
int age=input.nextInt();
if (age>=18){
System.out.println("你已成年!");
}
}
}
三、常用的逻辑运算符
运算符 | 名称 | 说明 |
---|---|---|
&& | 与 | 表示多个条件都为true否则为false |
|| | 或者 | 表示多个条件中一个为true 结果为true 多个条件都为false结果为false |
! | 非 | 条件为true时,结果为false 条件为false时,结果为true |
四、if else的选择结构
可以处理具有两个分支的选择结构
if (条件表达式){
//代码块1
}else {
//代码块2
}
五、多重if选择结构
可以处理具有两个以上分支的选择结构
if (条件1){
//代码块1
}else if (条件2){
//代码块2
}else {
//代码块3
}
六、镶嵌if选择结构
可以处理某个分支中镶嵌其他选择结构的复杂情况
if (条件1) {
if (条件2) {
//代码块1
} else {
//代码块2
}
}else {
//代码块3
}
七、新增知识点
1、生成最小值到最大值之间的随机数
int num=(int)(Math.random()*(最大值-最小值+1)+最小值);
2、获取个位、十位、百位、千位、万位的数
int ge = num % 10;
int shi = num / 10 % 10;
int bai = num/100%10;
int qian = num / 1000 % 10;
int wan = num / 10000;
3、条件运算符
public class text {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入你的年龄:");
int age = input.nextInt();
String a = age >= 18 ? "你已成年" : "你未成年";
System.out.println(a);
}
}
第四章 switch选择结构
一、语法
switch (表达式){
case 常量1:
//代码块1;
break;
case 常量2:
//代码块2;
break;
.......
default:
//代码块n
break;
}
二、关键字
switch 表示开关
case 表示情况 case必须是一个常量 可以有多个,没有固定顺序
default 表示默认 一般放在最后,表示除case的所有情况外要执行的指令
break 表示停止 表示执行完这个case或者default的指令后直接跳出整个switch结构
三、JAVA选择结构
1、if简单选择结构
2、if-else选择结构
3、多重if选择结构
4、镶嵌if选择结构
5、switch选择结构
第五章 while循环结构
一、什么是while循环?
while (循环条件){
// 循环操作
}
循环条件:是一个表达式,他的值为布尔类型(boolean),结果为true或者false
循环操作:位于{}中的代码,又称为循环体
二、调试知识
Debug:
类似小虫子的图标,点击会进入调试阶段,代码运行到那一步都会显示。
更有利于我们进行调试代码
三、do-while循环结构
1、do-while循环的执行过程是先进行循环操作,再来判断循环条件是否成立。
如果成立,就会继续循环,如果不成立,就会跳出循环
无论循环条件是否成立,循环操作至少会重复一次
2、while循环与do-while循环的区别
while循环结构的特点是先判断,后执行
do-while循环的特点是先执行,后判断
第六章 for循环结构
一、语法
for (int i = 1; i <= 5; i++)// 表达式1 表达式2 表达式3
{ //循环体
}
}
表达式1:设定循环变量的初始值,确定从哪个值开始计数
表达式2:为循环条件的表达式,结果为Boolean类型,它的作用是来确定循环的终点;如果没有该表达式,则该循环为死循环
表达式3:用于完成循环变量递增或者递减的表达式,通常会用到“++”或者“–”运算符
二、跳转语句
1、break跳转语句
for (int i = 1; i <6 ; i++) {
if (有临时任务){
break;
}
}
当条件满足临时任务条件时,使用break跳出当前循环
2、continue跳转语句
for (int i = 1; i <6 ; i++) {
if (需要充电了){
continue;
}
}
当条件“需要充电了"成立,跳出当前循环,后面的语句将不再会被执行
即continue的作用是跳出当前的循环,但是仍然可以进行下一次循环,并不是结束所有循环
第八章 数组
一、为什么使用数组?
当我们想要输出一些东西我们可能会用
System out println{“asdads”}
…
System out println{“asdads”}
但是,当我们需要输出成千上万个又该怎么写?
我们可以定义一个数组
int []nums=new int[99999];
表示我们设置了一个数组,命名为nums,他的里面可以储存99999个变量
在我们定义一个数组后 例:
我们定义一个长度为4的数组,内容为21、73、29、7
下面的0、1、2、3为他们的下标
注意,下标是从0开始 最大下标为:数组长度减一
二、语法
数组名=new 数据类型[数组长度];
数组的类型和长度决定着这串连续内存的空间大小 例:
names=new String[6]; //电子菜单中最多可以储存6种名称
nums=new int[5]; //可以储存5种int类型的数据
prices=new double[6]; //可以储存6种价格数据
我们在获取数组长度时,可以使用length;
int[] nums = new int[6];
System.out.println(nums.length);
三、数组元素初始值
数据类型 | 初始值 |
---|---|
int | 0 |
double | 0.0 |
char | ‘\u0000’ |
boolean | false |
四、数组的综合应用
1、数组排序
运用新代码
public class text {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int [] nums =new int[5];
for (int i = 0; i <nums.length ; i++) {
System.out.println("请输入"+(i+1)+"个数:");
nums[i]=input.nextInt();
}
Arrays.sort(nums);
for (int i = 0; i <nums.length ; i++) {
System.out.println(nums[i]+" ");
}
}
}
2、求数组最大最小值
擂主=选手[0];
for (int i = 1; i <选手数 ; i++) {
if (选手[i]>擂主){
擂主=选手[i];
}
}
3、在数组中插入数据
public class text {
public static void main(String[] args) {
int[] cards = new int[5];
int shu = 0;
int index = cards.length; //储存插入位置
Scanner input = new Scanner(System.in);
cards = new int[]{12, 54, 32, 66, 0};
System.out.println("请输入要插入的数");
shu = input.nextInt();
for (int i = 0; i < cards.length; i++) {
if (shu > cards[i]) {
index = i; //找到插入位置并记录
break;
}
}
for (int i = cards.length - 1; i >= index; i--) {
cards[i] = cards[i - 1];
}
cards[index] = shu;
System.out.println("添加数后的数为:");
for (int i = 0; i < cards.length; i++) {
System.out.println(cards[i] + " ");
}
}
}
四、数组知识总结
1、使用数组保存数据的步骤:声明数组、分配空间、为数组元素赋值
2、数组可以用一个循环为元素赋值,或用一个循环输出数组中的元素信息
3、数组中的下标是从0开始
4、数组中的所有元素必须属于相同的数据类型
第九章 深入循环结构
一、多重循环
1、while
2、do-while
3、for
4、while中嵌套while循环
5、do-while循环中嵌套do-while循环
6、for循环中嵌套for循环
7、其他不同的循环嵌套
二、典型例题
1、使用java代码输出矩形
for (int i = 1; i <=9 ; i++) {
//内层循环 控制每行输出个数
for (int j = 1; j <=9 ; j++) {
System.out.print("*");
}
System.out.print("\n"); //换行
}
2、输出直角三角形
public class text {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入行数");
int hang = input.nextInt();
for (int i = 1; i <= hang; i++) {
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.print("\n");
}
}
}
3、输出等腰直角三角形
public class text {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int stars = 1;
System.out.println("请输入行数");
int hang = input.nextInt();
int spaces = hang - 1;
for (int i = 1; i <= hang; i++) {//外层循环控制行数
for (int j = 1; j <= spaces; j++) {//输出每行前面的空格
System.out.print(" ");
}
for (int k = 1; k <= stars; k++) {
System.out.print("*");
}
System.out.println();//换行
spaces--;
stars += 2;
}
}
}
4、用java语言输出九九乘法表
public class text {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
for (int i = 1; i <9 ; i++) {
for (int j = 1; j <=i ; j++) {
System.out.print(i+"*"+j+"="+i*j+" ");
}
System.out.println(" ");
}
}
}
第十一章 类和对象
一、类是对象的模板,对象是类的实例
二、类和对象的应用
1、如何定义类
public class <类名>{
//定义属性部分
属性一的类型 属性一
.......
//定义方法部分
方法一();
.......
}
主要分为三个步骤:
(1)定义类的框架
(2)编写类的属性 → 一般是声明一个变量 复制什么的
例如 String name; int age; …
(3)编写类的方法 → pubilc viod sing(){} 编写了一个唱的方法
二、语法
对象名.属性 //引用对象的属性
对象名.方法名() //引用对象的方法
三、如何创建和使用对象
1、语法名
类名 对象名=new 类名();
text text=new text();
使用对象后就可以再调用方法
四、总结
定义类:使用关键字class
创建类的对象:使用关键字new
使用类的属性和方法:使用符号“.”
第十二章 类的无参方法
一、类的方法
1、返回值类型
2、方法名
3、主体 { 修饰符 参数 }
4、定义 确定方法名 返回值类型 方法体
二、 语法
1、return 返回值
功能1:跳出方法。结束当前的方法
功能2:返回结果,如果执行完产生了一个值,将这个值放在ruturn后,表示结束方法并把执行产生的值返回给调用它的程序/
2、对象名.方法名();
每个对象都要描述一个具体的事物,当需要某一个对象来完成他的一项特定功能时,通过调用它的方法来实现。 在类中,不同的方法之间可以互相调用。
三、变量的作用域
局部变量和成员变量的区别
定义 | 作用域 | 初始值 | |
---|---|---|---|
成员变量 | 定义类中,方法外的变量 | 在整个类中都有效,所有成员方法都可使用 | 有初始值 |
局部变量 | 定义在方法中的或代码块中的变量 | 仅限于定义它的方法,方法外无法访问 | 无初始值 |
一个方法中,不允许有相同名字的局部变量,在不同方法中,可以有不同名字的局部变量
局部变量可以和成员变量同名,并且在使用时,遵循就近原则,局部变量优先级更高
四、javaDoc注释
1、什么是javaDoc注释
我们所学习的java注释有单行注释 // 还有多行注释/ /
除此之外,还有Java Doc注释
/**
* Member类
* @author Tom
* @version 1.0 2023/10/25
*/
2、常用的javaDoc标签
标签 | 含义 | 标签 | 含义 |
---|---|---|---|
@author | 作者名 | @version | 版本标识 |
@paramemter | 参数及其含义 | @since | 最早使用该方法/类/接口的JDK版本 |
@return | 返回值 | @throws | 异常抛出条件 |
第十四章 类的带参方法
一、什么是带参方法
语法
[<访问修饰符>]返回值类型<方法名>([<参数列表>]){
//方法体
[return 返回值;]
}
数据类型 参数1, 数据类型 参数2,...数据类型 参数n,
其中n>=0。如果n=0,代表没有参数,这是方法就是无参方法
二、如何调用带参方法
语法
对象名.方法名(参数1,参数2,…,参数n);
三、带多个参数的方法
常见错误
1、形参和实参的数量不同
2、形参和实参的数据类型不同
3、在实参前添加数据类型
4、未处理返回值
5、传参顺序和实参顺序不一致
四、带参方法进阶
1、数组作为方法的参数
2、对象作为方法的参数
五、java中的包
**Package就相当于文件夹 ** 在java中,通过包来管理类
六、总结
声明包用package关键字,导入包使用import关键字
第十五章 字符串
一、String类字符串的方法
1、获取字符串长度:.length()
String name = "默默";
int anInt = name.length();
2、查找字符出现的位置:
indexuf(“需要查找的字符”)
String name="abcefd";
int i=name.indexOf("b");
System.out.println("第一个要查的字符的位置是:"+i);
lastlndexof(”需要查找的字符“)
String name="abcdef";
int i=name.lastIndexOf("b");
System.out.println("最后一个要查找的字符的位置是:"+i);
3、截取范围内的字符串
subString(截取的范围)
subString(2)–只有开始的位置–从开始的位置(包括开始的字符)截取到最后
subString(2,6)–由开始的位置和结束的位置,截取范围之间的字符(包括开始的字符,不包括结束的字符)
4、合并字符串
(1)用+号连接的数据类型
(2)–concat(”需要添加的字符串“)
String name = "abcdef";
String newName = name.concat("ddeeff");
System.out.println(newName);
5、拆分字符号
spilt(”需要拆分的地方“)–拆分出来的是一个数组类型
String[] names=name.split(" ");
for (int i = 0; i <names.length ; i++) {
System.out.println(names[i]);
}
6、格式化
trim()–之去掉字符串开头和结尾的空格
String name=" aabbcc";
String i=name.trim();
System.out.println(i);
7、大小写
大写toUpperCase()
String name = "aabbcc";
String i = name.toUpperCase();
System.out.println(i);
小写toLowerCase()
String name = "aabbcc";
String i = name.toLowerCase();
System.out.println(i);
8、判断相等
(1)比较对象.equals(比较对象)—只能比较是否一模一样
(2)比较对象.equalsignoreCase(比较对象)—比较但不区分大小写
(3)使用两个=号判断相等–比较堆的地址是否相等
二、StringBuffer类
StringBuffer类型字符的方法
(1)改变类型成为String类型 toString()
(2)合并字符串 appen(”需要添加的内容“)
)–由开始的位置和结束的位置,截取范围之间的字符(包括开始的字符,不包括结束的字符)
4、合并字符串
(1)用+号连接的数据类型
(2)–concat(”需要添加的字符串“)
String name = "abcdef";
String newName = name.concat("ddeeff");
System.out.println(newName);
5、拆分字符号
spilt(”需要拆分的地方“)–拆分出来的是一个数组类型
String[] names=name.split(" ");
for (int i = 0; i <names.length ; i++) {
System.out.println(names[i]);
}
6、格式化
trim()–之去掉字符串开头和结尾的空格
String name=" aabbcc";
String i=name.trim();
System.out.println(i);
7、大小写
大写toUpperCase()
String name = "aabbcc";
String i = name.toUpperCase();
System.out.println(i);
小写toLowerCase()
String name = "aabbcc";
String i = name.toLowerCase();
System.out.println(i);