文章目录
- 配置与删除Java环境
- 1.安装Java环境(JDK)
- 2.删除Java环境(JDK)
- Java学习
- 1. 数据类型
- 基本数据类型(primitive type)
- 1.整数类型
- 2.浮点类型
- 3.字符类型
- boolean类型
- 引用数据类型(reference type)
- 2. 变量的作用域
- 变量(variable)
- 1. 默认值
- 2.类变量(static)
- 3.局部变量
- 常量(constant)
- 3. 运算符
- 自增运算符
- 逻辑运算符(&&,||,!)
- 位运算符(&,|,^,~,>>,<<,>>>)
- 条件运算符
- 4. 包(package)
- 5. Scanner
- 基本语法
- next();
- nextLine();
- 6.类和对象
- 方法的调用
- 1. 静态方法(static)
- 2. 非静态方法
- 封装
- 1. 定义
- 2. private
- 继承(extends)
- 1. object
- 2. super
- 3. @Override(重写)
- *为什么需要重写
- 多态
- 1. 定义
- 2. 总结
- 3. 注意示项
- 4. instanceof(类型转换)
- 抽象类(abstract)
- 1. 定义
- 2. 注意
- 接口(interface,implements)
- 1.定义
- 2. 总结
- 7. Error和Exception
- 异常处理机制
- 五大关键词
- 8. 来源
配置与删除Java环境
1.安装Java环境(JDK)
- JDK下载地址
- 安装(安装时记住安装的位置)
- 配置 JAVA_HOME 环境变量
- 右键我的电脑–>属性–>高级系统设置–>环境变量–>新建
- 配置 path 环境变量
- 右键我的电脑–>属性–>高级系统设置–>环境变量–>系统变量–>path–>新建
- 测试JDK是否安装完成
- 打开cmd或Windows PowerShell,输入java -version
2.删除Java环境(JDK)
- 删除Java的安装目录
- 右键我的电脑–>属性–>高级系统设置–>环境变量–>
- 删除JAVA_HOME
- 删除path下关于Java的目录
- 查看是否删除干净
- 打开cmd或Windows PowerShell,输入java -version
Java学习
1. 数据类型
基本数据类型(primitive type)
1.整数类型
- byte
- short
- int
- long
2.浮点类型
- float
- double
3.字符类型
- char
- String
boolean类型
引用数据类型(reference type)
- 类
- 接口
- 数组
2. 变量的作用域
变量(variable)
1. 默认值
- 实例变量:从属于对象,如果无初始化值,默认为 0 或 0.0
- 布尔值:默认值为false
- 除了八大基本类型,其他的默认设置都为null
2.类变量(static)
- 作用于整个类
3.局部变量
- 必须声明和初始化值
常量(constant)
- 初始化后不能再改变的值,不会变动的值
- 常量名一般使用大写字符
- final
3. 运算符
自增运算符
① ++a(–a)和a++(a–)的不同
- ++a(–a)
eg: int b = ++a; //执行完这行代码后,先自增,再给b赋值; - a++(a–)
eg: int a = a++; //执行完这行代码后,先给b赋值,再自增;
逻辑运算符(&&,||,!)
- 短路运算
[^]: 如果c<4是false 则后面的c++<4不会运行
位运算符(&,|,^,~,>>,<<,>>>)
^(异或):相同为零,其余为一
~(取反)
<<(左移):*2
eg:2<<3 ——> 2×2×2×2
>>(右移):/2
eg: 16>>3 ——> 16÷2÷2÷2
条件运算符
- 三元运算符
eg:x?y:z //如果x==true,则结果为y,否则结果为z
4. 包(package)
5. Scanner
基本语法
Scanner scanner = new Scanner(System.in);
next();
- 一定要读取到有效字符后才可以结束
- 对输入有效字符之前遇到的空白,next()方法会自动将其去掉
- 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
- next()不能得到带有空格的字符串
nextLine();
- 以Enter为结束符,返回输入回车键之前的所有字符
- 可以获得空白
6.类和对象
方法的调用
1. 静态方法(static)
- 可直接调用其他类的方法
Student.say();
2. 非静态方法
- 需实例化这个类(new),才可调用方法
- 对象类型 对象名 = new 对象值();
Student student = new Student();
Student.say();
封装
1. 定义
- 提高程序的安全性
- 隐藏代码的实现细节
- 统一接口
- 提高系统的可维护性
2. private
用private封装后,若想要调用封装后的属性值(name,sex,age),则需定义get/set方法
继承(extends)
extend:单继承
接口:多继承
私有的东西无法被继承
1. object
java内部的类,所有的java类的基类
2. super
System.out.println(name);//主函数传进来的name
System.out.println(this.name);//当前类传进来的name
System.out.println(super.name);//基类(父类)传进来的name
eg:
3. @Override(重写)
- 需要有继承关系,子类重写父类的方法
- 静态方法(static)是类的方法,非静态方法是对象的方法
[^]: 所以上述的b.test();由于是非静态方法重写,所以是对象的方法,最后输出为子类A的println
static,final,private的类型不能重写
*为什么需要重写
- 父类的功能子类不一定需要,不一定满足子类
多态
1. 定义
- 存在条件:继承关系,方法需要重写
- 一个对象的实际类型是确定的,但是可以指向的引用类型不确定, 父类的引用可以指向子类
Student s1 = new Student();
Person s2 = new Student();
Object s3 = new Student();
- 子类重写了父类的方法,就会执行子类的方法(前提是子类和父类都有同样的方法)
- 如果父类没有子类的方法,则父类不能调用子类的方法
2. 总结
- 子类:能调用自身的方法和继承的方法
- 父类:可以指向子类,但是不能调用子类独有的方法
3. 注意示项
static,final,private的类型不能重写,无法实现多态
4. instanceof(类型转换)
- 判断两个类是否有关系
System.out.println(A instanceof B);
抽象类(abstract)
1. 定义
约束,只有方法的名字,没有方法的内容,方法内容由子类来实现
2. 注意
- 子类必须实现抽象类的所有abstract方法,除非继承它的子类也是抽象的d
public abstract class B{
public abstract void test();
}
public class A extends B{ //子类必须实现抽象类的所有abstract方法
@Override
public void test(){
}
}
public abstract class C extend B{ //子类C也是抽象类,则无需实现父类B的抽象方法,可由子子类实现
}
- 抽象类不能new,只能靠子类去实现它
假设B类是抽象类,则new class B();
- 若一个类里面有abstract方法,则这个类必须是抽象类,但抽象类里可以写普通的方法
接口(interface,implements)
1.定义
- 接口中的所有定义的方法默认都是public abstract
- 接口中所有定义的常量默认都是public static final
public class interface B{ //接口类
void test(String name);
}
public class interface C{ //接口类
void test(int age);
}
public class A implements B{ //A类去实现接口类B
@Override
public void test(String name){
}
}
public class A implements B,C{ //多继承,A继承B和C
@Overrride
public void test(String name){
}
public void test(int age){
}
}
2. 总结
- 约束
- 定义一些方法,让别人去实现
- public abstract
- public static final
- 接口不能被实例化(不能new),因为接口中没有构造方法
- 接口可以实现多个
- 必须重写接口中的方法
7. Error和Exception
异常处理机制
五大关键词
- try,catch,finally,throw,throws
- try监控区域
- catch(想要捕获的异常类型)
- 可以用多个catch去捕获异常,但需要从小到大去捕获 // Throwable>Exception=Error>…
[^]: 异常结构体系
- finally处理善后工作
public class Learn {
public static void main(String[] args) {
int a = 1;
int b = 0;
int c = 0;
try{ //try监控区域
System.out.println(a / b);
}catch(ArithmeticException e){ //catch捕获异常
System.out.println("程序出现异常,变量b不能为0");
}finally{ //处理善后工作
System.out.println("finally");
}
}
}
- throw、throws主动抛出异常
public class Learn {
public static void main(String[] args) {
int a = 1;
int b = 0;
int c = 0;
try{ //try监控区域
if(c == 0){
throw new ArithmeticException(); //throw(方法里)主动抛出异常
}
}
}
public void test() throws ArithmeticException{ //throws(方法上)主动抛出异常
if(c == 0){
throw new ArithmeticException();
}
}
}