1、基础语法
Hello Wolrd
- 首先定义类
—— public class 类名 - 在类定义之后加上一对大括号
—— {} - 在大括号中间添加一个主(main)方法/函数
—— public static void main(String[] args){} - 在主方法的大括号中间添加一行输出语句
—— System.out.println("Hello World”) - 完整代码
- public class HelloWorld{
public class static void main(String[] args){
System.out.println("Hello World!")
}
} - Javac —— 编译 javac HelloWorld.java
- Java + HelloWorld 运行
初学者注意事项
- 单词拼写问题
— class > Class
— String > string
— System > system
— main > mian - 中文符合问题
— 提示非法字符
1.1、Java入门
1.1.0、注释
注释
// #单行注释
/*...*/ #多行注释
/...*/ #文本注释
JAVA 语句用 ; 分号结束。
命名
A、类:首字母大写
B、方法/函数:首字母小写第二个单词首字母大写
C、变量: 首字母小写第二个单词首字母大写
D、常量:全部字母大写
标识符
程序员对程序中的各个元素加以命名时,使用的命名记号,称为标识符。
标识符以字母 下划线(__) 美元符($)开始的一个字符序列,
后可跟 字母,下划线,美元符,数字。
1.1.1、关键字
abstractdefaultifprivatethisbooleandoimplementsprotectedthrowbreakdoubleimporpublicthrowsbyteelseinstanceofreturntransientcaseextendsintshorttrycatchfinalinterfacestatictfpvolatilecharfinallylongstrictfpvolatileclassfloatnativesuperwhileconstfornewswitchnullcontinuegotopackagesynchronized
1.1.2、常量
常量:程序执行中,值不可发生改变
变量:在程序执行中,值会发生变化
- 常量分类
—— A: 字符串常量 'DataScience’
—— B: 整数常量 123
—— C: 小数常量 1.23
—— D: 字符常量 ‘a’,’1’
—— E: 布尔常量 true ,false —— F: 空常量 (null、'’)
public
1.1.3、变量
变量的申明:
访问[修饰符] 数据类型 变量名称=初始值
变量的分类: 1、按照声明位置: 成员变量: 类的内部,方法的外部定义的变量 局部变量: 方法或代码块的内部定义的变量 区别: 成员变量有默认初始值,局部变量没有 成员变量的作用域在整个类的内部,局部变量在当前方法或代码块中
变量实例:
/**
1.1.4、数据类型
数据类型 —— Java是强类型语言,针对每一种数据都给出了明确的数据类型。 数据类型分类:
- A:基本数据类型
- B:引用数据类型 (类、接口、数组)
基本数据类型(以及占用字节数)
- A、整数
- byte 1
- short 2
- int 4
- long 8
- B、浮点数
- float 4
- double 8
- C、字符
- char 2
- D、布尔
- boolean 1
注意
- A:整数默认是int类型,浮点数默认是double类型
- B:
- 定义long类型数据的时候,要加L或者l,建议加L
- 定义float类型数据的时候,要加F或者f,建议加F
整型变量
类型占用储存空间表数范围byte1字节-128~127short2字节-215~215-1int4字节-231~231-1long8字节-263~263-1
浮点型变量
类型占用储存空间表数范围float4字节-3.403E38~3.403E38double8字节-1.798E308~1.798E308
字符型变量: char 一个字符2字节
布尔型变量: true false
符号常量 final 变量类型 变量名=初始化值
值常量
整型常量、浮点型常量、符号型常量、字符串常量、布尔型常量(true false) 空常量
转义字符含义b退格(backspace)t水平制表(Tab)f走纸换页,只对打印有效n换行r回车反斜杠字符'单引号字符"双引号字符ddd1--3位八进制数所代表的ASCII字符uxxxx1-4位十六进制数所代表的unicode字符
1.1.5、 计算机存储单元
bit(比特位) -----字节(byte)
单位换算:
- 1B(字节) = 8it
- 1KB = 1024B
- 1MB = 1024KB
- 1GB = 1024MB
- 1TB = 1024GB
- 1PB = 1024TB
- 1ZB = 1024PB
1.1.6、标识符
标识符
1.1.7、运算符优先级
优先级运算符结合性1() [ ] .从左向右2! +(正) -(负) ~ ++ --从右向左3/ * %从左向右4+ (加) -(减)从左向右5《 》 >>>从左向右6<<=>> instanceof从左向右7== !=从左向右8& (按位与)从左向右9^从左向右10|从左向右11&&从左向右12||从左向右13?:从右向左14= += -= *= /= %= &= |= ^= ~= <<= >>= >>>=从右向左
1.2、基本类型数据转换
1.2.1、定义变量
变量格式
Demo
public
1.2.2、变量定义的注意事项
package
1.2.3、类型转化
package
1.2.4、运算符
1.2.4.1、运算符
运算符: 用于 常量和变量操作的符号
表达式:用运算符号链接起来符合java语法的句子
EG: a,b a+b
1.2.4.2、运算符分类
1、算术运算符
+,-,*,/ ,%,++,--
+,-,*,/
// +,-,*,/ 使用
% (取余)
%:用于获取 两个数据相除时候的余数 /: 用于获取 两个数据相除时候的商
int
+
+: 加法运算
- 正常加法运算
- int a =10;
- int b = 12;
- 字符参与加法运算,是拿字符在计算机中存储的数据值来参与运算的
- “A” 65
- ‘a’ 97
- ‘0’ 48
- 字符串参与加法运算,其实不是做加法,而是字符串的拼接
- 例如: int a =1; int b =2;
- System.out.println("hello”+a)
- hello1
System.out.println(a+b+"hello”)
3hello
- 注意
++,--
++,-- : 自增自减,用于对变量+1 或 -1
- 单独使用:
- 放在变量前后都可以,结果一样
- 其它操作:
- ++ 在后边,先拿变量做操作,然后变量再++
- ++ 在前边,先变量++,再拿变量做操作
package
2、赋值运算符
赋值运算符:
- 基本赋值运算符:=
- 扩展赋值运算符:+=,-=,*=,/=,…..
package
3、关系运算符
关系运算符:
- ==, !=,>,>=,<,>=
- 关系运算符结果是 boolean类型.(false/true)
注意事项:
- 不要把两个== 写成 = (除非你赋值)
4、逻辑运算符
逻辑运算符:
- 释义:用于链接关系表达式
- 逻辑运算分类:
- &,|,^,!
- &&, ||
&(或)
有false 则false
|(与)
有true则true
^(异或)
相同则false,不同则true
!(非)
true则false,false 则 true
&&
&& 和 & 的结果一样
&& 与 & 的区别:
- && 有短路效果,左边为false,右边不执行
- & 左边无论是什么,右边都会执行
||
|| 和 | 的结果一样
|| 与 | 的区别:
- || 左边为true ,右边不执行
- | 左边无论是啥,右边都执行
5、三元运算符
三元运算符:
- 关系表达式?表达式1:表达式2
执行流程:
- A: 计算关系表达式的值(true/false)
- B: 结果展示
- 如果是true,表达式1就是结果
- 如果是false,表达式2就是结果
// 三元运算符
案例:取三个数中的最大值
// 获取三个数的最大值
1.2.5、键盘录入
package
录入数据求和
// 录入数据 并且求和
1.2.6、流程控制语句
顺序结构
从上往下,依次执行!
选择结构
if语句:
- if(关系表达式){
语句体
} - 执行流程
- A: 首先计算关系表达式的值,看是true/false
- B: 如果是true,就执行语句体
- C: 如果是False,则不执行
// if 关系表达式 int a = 10; int b = 20; if(a==b){ System.out.print("a=b") } int c = 10; if(a==c){ System.out.println("a=c") }
- if(关系表达式){
语句体1;
}else{
语句体2;
}
// 判断一个数 是偶数还是奇数 int a = 100; // 重新给a赋值 a = 99; if(a%2 ==0){ System.out.println("a为偶数"); }else{ System.out.println("a为奇数"); }
- if(关系表达式1){
语句体1;
}else if(关系表达式2){
语句体2;
}
…
else{
语句体n+1;
}
// 多个if 表达式 int x = 10; int y; if (x >= 3){ y = 2 * x + 1; } else if (x >= -1 && x<3){ y = 2 * x; }else if (x <= -1){ y = 2 * x - 1; }else { y = 0; System.out.println("不存在x"); } System.out.println("y"+y);
键盘录入案例比较
// 键盘录入判断最大值
1.2.7、选择结构语句
switch
package
1.2.8、循环结构语句
1.2.8.1、for
package
1-100 偶数和
// 结果:2550
水仙花
//经典案例 水仙花数
1.2.8.2、while
package
1.2.8.3、do…while
package
1.2.8.4、 三种循环语句区别
A: do…while 循环至少执行一次循环体
B: for和 while 必须判断条件成立才执行循环体
package
for 和 while 区别
for循环结束后,初始化变量不可被使用。
while 循环结束后,初始化变量可以被使用。
推荐使用顺序:
- for
- while
- do…while
// for 和 while 的区别
1.2.9、跳转控制语句
Break(中断)
break:中断
使用场景:
- A:switch语句中
- B:循环中
注意:
- 离开场景,将无意义。
作用:
- 用于结束循环
package
Continue(继续)
continue:继续
使用场景:
- 循环中
作用:
- 结束一次循环,进入下一次循环。
package
1.3、Random
Random:用于产生随机数
使用步骤:
- A:导包
- import java.util.Random;
- B:创建对象
- Random r = new Random();
- C:获取随机数
- int number = r.nextInt(10)
- 数据范围:[0,10) 包括0,但不包括10
package
猜数字游戏
package
1.4、数组
数组:存储同一种数据类型的多个元素的容器
取值:
- 数组名 【索引】
定义格式:
- A:数据类型[] 数组名;(推荐方式)
- B:数据类型 数组名[];
- 案例:
- int[] arr; 定义int类型的数组,名称为 arr
- int arr[];定义int类型的变量,变量名为arr数组
数组初始化:
- A:数组开辟内存空间,为数组中的每个元素赋值
- B:数组初始的方式:
- a:动态初始化 只给出长度,系统给初始化值
- b:静态初始化 给出初始值,由系统决定长度
动态初始化:
- 数据类型[] 数组名 = new 数据类型[数组长度];
静态初始化:
- 数据类型[] 数组名 = new 数据类型[]{元素1,元素2….};
- 简化格式:
- 数据类型[] 数组名 ={元素1,元素2,…}
动态初始化
package
静态初始化
package
常见小问题
小问题:
- ArrayIndexOutOfBoundsException: 数组索引越界异常
- 原因
- NullPointerException:空指针异常
- 原因
数组遍历练习
package
取最值
思路:
- A:先拿数组中的一个元素做参照物
- B:遍历数组,让后边所有元素依次和参照物进行比较,如果元素比参照物大,就留下
- C:整个循环遍历比较,留下的就是最大值
package
二维数组
二维数组: 元素为一堆数组的数组
定义格式:
- A:数据类型[ ] [ ] 数组名; (推荐的方式)
- B:数据类型 数组名[ ] [ ]
- C:数据类型[ ] 数组名[ ]
初始化:
- A: 动态初始化
- 数据类型[ ] [ ] 数组名 = new 数据类型[m] [n];
- m 表示的是 二维数组中一维数组的个数
- n 表示的是 一维数组中的元素个数
- B: 静态初始化
- 数据类型[ ] [ ] 数组名 = new 数据类型[ ] [ ] {{元素…},{元素….}}
- 简化格式:
- 数据类型[ ] [ ] 数组名 = {{1,…},{2….},{3….}}
取值:
- 二维数组名配合索引可以获取到每一个一维数组 【arr[索引]】
- 一维数组配合索引名可以获取到数组中的元素【arr[索引] [索引]】
二维数组取值
package
1.5、函数
方法使用
方法: 特定功能的代码块
方法定义格式:
- 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2 ..){
方法体;
return 返回值;
}
格式解释:
- A:修饰符 public static
- B:返回值类型 限定返回值的数据类型
- C:方法名 方便我们调用方法的名字
- D:参数类型 用于限定调用方法时传入数据的类型
- E:参数名 用于接收调用方法时传入的数据变量
- F: 方法体 完成功能代码
- G:return 结束方法,并且把返回值带给调用者
方法明确:
- A:返回值类型 明确功能结果的数据类型
- B:参数列表 明确有几个参数,以及参数的数据类型
方法调用:(有明确返回值的调用)
- A:单独调用 没有意义
- B:输出调用,有意义,但是不够好(因为我想要拿结果进一步操作)
- C:赋值调用
方法调用:(void修饰的方法)
- 如果一个方法没有明确的返回值,也不能空开返回值,用void表示该方法无返回值类型
- 只能输出调用。
求和方法
package
键盘录入两个数据判断是否相等
package
水仙花数
package
方法重载
不能出现参数名以及参数条件一致的方法
特点:
- 方法名相同,参数不同
- 参数不同
- 参数数量不同
- 参数个数不同
注意:在调用方法的时候,java虚拟机会通过参数列表的不同来区分同名的方法。
比较两个数据是否相等
package
形式参数
如果方法的参数是基本数据类型:
形式参数的改变不影响实际参数
如果方法的参数是引用数据类型:
形式参数的改变直接影响实际参数
数组遍历
package
1.6、断点调试
断点调试的作用:
A: 查看程序的执行流程
B: 调试程序
断点:
-- 标记 哪里需要点哪里
1.7、基础练习
不死神兔计算
package
评委评分
需求:
在编程竞赛中,有6个评委为参赛选手打分,分数为0-100的整数分。
选手最后的得分为,去掉一个最高分与最低分,剩下4个评委的平均值
分析:
- A:定义一个长度为6的数组
- B:键盘录入评委的分数
- C:写方法实现最高分、最低分
- D:写方法求评委分数和
- E:平均分:(和-最高分-最低分)/(arr.length-2)
- F:输出平均分
package
键入数组反转
需求:
- 1、键盘录入5个int的数据存在arr中
- 2、定义方法将arr数组中的内容反转
- 3、定义方法对反转后的数组进行遍历
package