1.Java 运行环境-JDK
JDK是java的开发环境包含JRE(Java的运行环境,包含JVM(Java虚拟机)和核心类库)和开发工具包(一些应有程序)
JDK安装后需要配置环境变量,网上教程大多如下
但是我想在此解释一下:我们为何要配置环境变量
首先我们创建了一个名称叫JAVA_HOME的变量,它的值为JDK的安装路径,故JAVA_HOME=/user/jdk
其次我们创建一个PATH,它里面的 “%JAVA_HOME%\bin”,会讲变量 JAVA_HOME 替换为 值为 jdk的路径,故PATH=/user/jdk/bin
在环境变量设置好之后,我们就可以在终端或者CMD窗口运行了,这是因为,如果我们把电脑看做一个程序,那么程序是有作用域这么一说的,而这个作用域通过路径来区分,所以设置了一个PATH对电脑来说就是设置了一个全局变量,故我们在哪里都可以运行
2.关键字
java的关键字一共有48个,如下:
abstract、assert、boolean、break、byte、case、catch、char、class、continue、default、do、double、else、enum、extends、final、finally、float、for、if、implements、import、int、interface、instanceof、long、native、new、package、private、protected、public、return、short、static、strictfp、super、switch、synchronized、this、throw、throws、transient、try、void、volatile、while
2个保留字:goto、cons
其中比较常用的加粗展示,下面讲解一下
2.1 default(可省略)、private、protected、public,权限对比如下:
类内部 本包 子类 外部包
public ✔ ✔ ✔ ✔
protected ✔ ✔ ✔ ✖
default ✔ ✔ ✖ ✖
private ✔ ✖ ✖ ✖
举例如下:先在一个包下创建一个类Test
同包下私有变量无法访问
不同包的类除public外均不可访问,不同包中的子类也只能访问public和protracted变量
2.2 数据类型8个关键字,第3点会讲到
int、byte、long、short、float、double、Boolean、char
2.3 class,package,import
class:用于创建类
package:包,作用是把不同的 java 程序分类保存,更方便的被其他 java 程序调用。
如:package net.java.util; public class pac{ … },那么它的路径应该是 net/java/util/Something.java 这样保存的
import:用于引用,如常用的
import java.util.Scanner;
2.4 变量引用,super,this,void
2.5 程序控制 switch+case+break、if+else、continue、do+while、for
会在第6、7点中讲到
2.6 return用于方法调用时,返回值
3.数据类型
Java的数据类型与其他语言类似,主要分为2大类
两大类:基本数据类型和引用数据类型
而基本数据类型又分4类8种
4类:整型、浮点型、布尔型、字符型
8种:整型(int(4字节)、byte(1字节)、long(8个字节)、short(两个字节))、浮点型(float(4个字节)、double(8个字节))、布尔型(Boolean(1个字节))、字符型(char(2个字节))
4.运算符
Java的运算符有
4.1 算位运算符 +、-、*、/、%
也就是我们的加、减、乘、除、取余
4.2 自增运算符 ++、–
4.3 赋值运算符 =、+=、-=、/=、*=
4.4 关系运算符 >、<、>=、<=、!=、==(比较运算符)
其他不做过多阐述,讲一下=和==的区别,=是赋值,==是比较
4.5 逻辑运算符 &(单与)、|(单或)、^(异或)、!(非)、&&(双与)、||(双或)
其他不做过多阐述,讲一下&和&&的区别,|和||同理
5.方法(方法重载Overload,方法重写Override)
重写和重载的区别主要在于:
重载:在同一个类中,两个方法的名字完全相同,只是参数列表不同
重写:在子类继承父类时,子类的方法和父类完全一致,在方法前加上@override即可证明是重写方法
注意:子类不能重写父类中的私有方法
6.条件结构
java的条件语句主要包括如下
6.1 if-else
结构如下:if(布尔表达式){ //如果布尔表达式的值为true }else{ //如果布尔表达式的值为false }
6.2 else if,用于多种情况判断,和其他语言类似
if(布尔表达式 1){
//如果布尔表达式 1的值为true执行代码
}else if(布尔表达式 2){
//如果布尔表达式 2的值为true执行代码
}else { //如果以上布尔表达式都不为true执行代码 }
6.3 switch case
class i{
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
System.out.println(“请输入你喜欢的整数月份:”);
int mouth= sc.nextInt();
switch (mouth) {
case 1,2,3 -> System.out.println(mouth+“月”+“你喜欢的季节是春季”);
case 4,5,6 -> System.out.println(mouth+“月”+“你喜欢的季节是夏季”);
case 7,8,9 -> System.out.println(mouth+“月”+“你喜欢的季节是秋季”);
case 10,11,12 -> System.out.println(mouth+“月”+“你喜欢的季节是冬季”);
default -> System.out.println(“被玩坏了”);
}
}
}
如果在这基础上加上break
class i{
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
System.out.println(“请输入你喜欢的整数月份:”);
int mouth= sc.nextInt();
switch (mouth) {
case 1,2,3 -> {System.out.println(mouth+“月”+“你喜欢的季节是春季”);break;}
case 4,5,6 -> System.out.println(mouth+“月”+“你喜欢的季节是夏季”);
case 7,8,9 -> {System.out.println(mouth+“月”+“你喜欢的季节是秋季”);break;}
case 10,11,12 -> {System.out.println(mouth+“月”+“你喜欢的季节是冬季”);break;}
default -> {System.out.println(“被玩坏了”);break;}
}
System.out.println(“结束喽!”)
}
}
当遇到 break 语句时,switch 语句会终止。程序跳转到 switch 语句后面的语句执行(打印”结束喽“)。case 语句不必须要包含 break 语句。如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现 break 语句。
7.循环结构
java的循环结构主要包括for、while、do…while
以下均以输出1到10的奇数为例
for:
class a{
public static void main(String[] args) {
int i;
for(i=1;i<=10;i+=2) {
System.out.println(i);
}
}
}
while:
class a{
public static void main(String[] args) {
int i = 1;
while (i<=10){
if(i%2==1){
System.out.println(i);
}
i++;
}
}
}
do…while:
class a{
public static void main(String[] args) {
int i = 1;
do{
if(i%2==1){
System.out.println(i);
}
i++;
}while (i<=10);
}
}
三种语言如上,那么他们的区别是什么,以及我们在什么时候用哪一个呢?
7.1 三者的区别:
do…while的条件至少会执行一次,因为首先会执行再判断条件
for、while的条件可以一次都不执行,因为是先判断条件再执行
7.2 while和for的区别:
while的初始化条件i,在循环结束之后仍然可以使用
而for循环结束后,b却无法使用(如下),当然我们也可以使用,将b设为循环外的变量就行了,如int b;
7.3 什么时候用for,什么时候用while?
建议:明确循环次数用for,不明确用while
8.数组
数组的特点:
1.数组一旦初始化,长度就固定了,不能再改变,这也是它的缺点
2.数组中的所有元素的数据类型必须相同
数组的定义格式:
格式1:元素的数据类型[] 数组名 = new 元素的数据类型[数组长度] int[] arr = new int[3];
格式2:元素的数据类型[] 数组名 = new 元素的数据类型[]{元素1,元素2,元素3}; int[] arr = new int[]{1,2,3};
格式2:元素的数据类型[] 数组名 = {元素1,元素2,元素3}; int[] arr = {1,2,3};
如何使用数组:
数组使用原理:
数组因为是引用类型,所以数组对象存储在 堆内存 当中
如:int[] arr = new int[3]
数组创建时会在堆中创建一个内存地址,而我们的arr就是堆中的地址值,若未给数组元素赋值,则都默认为0
而我们给数组的赋值,即是往内存地址中该数组对应位置数据赋值,如arr[1]=66,即是这么一个过程