JavaSE:基础知识
JavaSE
学习狂神说java系列课程的笔记
1.运行过程
编译型:操作系统
解释型: 网页
Java文件先编译成字节码的javac文件,(通过JVM),通过解释器给操作系统平台。
2.数据类型
- 基本类型\引用类型
八个基本类型:byte(1) short(2) int(4) long(8) boolean(1 bit) float(4) double(8) char(2)
进制:二进制0b 八进制0 十六进制0x
所有字符的字符本质还是数字,Unicode编码表长两字节,0~65536 eg. '\u0061'
- 类型转换
强制转换(从高到低),存在内存溢出
自动转换
- JDK7特性:数字之间可以用下划线分割
3.变量作用域
- 类变量:static(修饰符不存在先后顺序)
- 实例变量:类里面,方法外面,从属于对象
- 局部变量:必须声明和初始化值,方法内
4.用户交互Scanner
Scanner scanner = new Scanner(System.in);
if(scanner.hasNextLine()) {
String str = scanner.nextLine();
System.out.println(str);
}
scanner.close();
5.IDEA 反编译
6.Java只有值传递
7.可变参数...
本质是数组,只能有一个放在形式参数最后
8.数组
//declare
dataType[] a;
//not recommendation
dataType a[];
dataType[] a = new dataType[10];
//过程:先在栈中分配一个a的空间,再在堆中分配空间,a指向堆。Java对象都是在堆中,数组是在堆中的。
数组对象本身没有什么方法供使用,但API提供了一个工具类java.util.Arrays供使用,如Arrays.toString。Arrays中的方法都是static修饰的静态方法,可以使用类名进行调用。
9.oop
-
类与对象的关系:类是一种抽象的数据类型,对象是具体实例
-
构造器:如果定义了有参构造之后想要使用一个无参构造,需要显示的定义。
-
内存分析:

10.继承
-
extends关键字
-
默认继承Object类
-
super关键字
-
父类构造器super();
-
方法重写:注解@override
- 子类重写父类的非静态方法
- 范围可以扩大不能缩小(public>protected>default>private)
- 抛出的异常:范围,可以被缩小但不能扩大:ClassFoundException -- Exception(大)
- 为什么:父类的功能子类不一定需要
- private方法不能重写,static方法不能,属于类,final不能,常量
(static不能原因:重写方法的目的是为了多态,或者说:重写是实现多态的前提,即重写是发生在继承中且是针对非static方法的。
语法上子类允许出现和父类只有方法体不一样其他都一模一样的static方法,但是在父类引用指向子类对象时,通过父类引用调用的依然是父类的static方法,而不是子类的static方法。)
11.多态
- 即同一方法根据发送对象的不同而采用不同的方式。
- 动态编译
- 一个对象的实际对象是确定的。可以指向的引用类型不确定,父类的引用可以指向子类
- 多态是方法的多态
- 父类和子类之间才能使用,ClassCastException
- 子类重写了父类的方法,会执行子类的方法
- instanceof,只要有父子关系就true
12.static修饰词
静态变量:与类有关,类名和对象名都可访问
静态方法:与类一起加载,可以在非静态函数直接调用
静态代码块:
static {
//只加载一次
}
{
//匿名代码块,每次new都执行一次,都在构造器之前
}
静态导入包:
import static java.lang.Math.random
import java.lang.Math
//false import ...random
13.抽象类
//抽象类,不能new,只能子类实现,约束;有构造器
public abstract class Action{
//抽象方法,子类必须实现
public abstract void do{}
}
14.接口
可以实现多继承,使用比抽象类广泛,没有构造方法
public interface UserService{
//接口中的所有定义的方法都是抽象的 默认前缀 public abstract
//属性默认常量 默认前缀,很少使用 public static final
//int age = 99;
void add();
}
//实现接口的类,可以多继承
public class serviceImp1 implements UserService, Timeservice{
public void add(){
}
}
15.内部类
- 成员内部类:A类中的B类
实例化B类需要A类的对象,内部类可以获得外部类的私有属性。
- 静态内部类:static,不能获得外部类的私有属性和非静态
- 一个java类中可以有多个class,但只能有一个public class类
- 局部内部类:方法里的类
- 匿名内部类:没有名字初始化类,不用将实例保存到变量中: new Apple().eat()
16.异常
java把异常当作对象处理,定义了一个基类java.lang.Throwable作为所有异常的超类。异常分为两大类:错误Error和异常Exception。
Error类对象由JVM生成并抛出,如,当JVM不再有继续执行操作所需的内存资源时,出现OutofMemoryError。错误是不可查的,它们在应用程序的控制和处理能力之外,并且绝大多数是程序运行时不允许出现的状况。
Exception:运行时异常RuntimeException,eg,ArrayIndexOutOfBoundException。这些异常一般由程序逻辑错误引起,应尽量避免。Exception通常情况下可以被程序处理,应尽可能在程序中处理。
-
异常处理:抛出异常throw、捕获异常try\catch\finally(optional,必执行)
-
catch(Throwable\Exception\Error),从小往大写
-
方法中抛出异常throws
自定义异常:继承Exception类即可
浙公网安备 33010602011771号