1. 内部类
1.1 定义
把类定义在另一个类的内部,该类就成为内部类。
1.2 语法
class 类名 {
//内部类
class 类名{
}
}
1.3 访问方法
外部类.内部类 变量名 = new 外部类对象.new 内部类对象
1.本类可以直接创建内部类对象。
public class Test01 {
String name;
public void test(){
System.out.println("Test01_test");
}
class Test02{
String age;
public void test(){
//内部类中调用父类中的属性name
System.out.println(name + "Test02_test");
}
}
}
2.可以在内部类中去访问外部属性。
1.4 匿名内部类
继承或者实现接口的时候.如果子类只用到一次,就可以使用匿名内部类实现,不用单独在创建一个类来实现
接口 变量 = new 接口(){
}
2 Object
object是所有类的根类,所有类都是直接或者间接继承Object类。
2.1 toString
返回该对象的字符串表示,通常toString方法会返回一个“文本方式表示”此对象的字符串,结果应该是一个简明易懂的信息表达式,建议所有的子类都重写此方法。
public class Student {
public String name;
public int age;
public String sex;
public Student(String name, int age, String sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", sex='" + sex + '\'' +
'}';
}
}
public class test {
public static void main(String[] args) {
Student student = new Student("小明",18,"男");
//System.out.println会默认帮我们调用对象的toString;
System.out.println(student);
System.out.println(student.toString());
//hashCod每一个对象都有自己的属性
System.out.println(student.hashCode());
}
}
2.2 hashCode()
由Object类定义的hashCode方法给不同的对象返回不同的(唯一)整数
2.3 equals()
比较两个对象地址的值。自定义类重写equals用来比较这两个对象是否相等(可以重写equals方法,比较两个参数的值)。
public class test {
public static void main(String[] args) {
Student student = new Student("小明",18,"男");
Student student1 = new Student("小明",18,"男");
// == 比较地址值
System.out.println(student == student1);
//equals任然是比较对象的地址值,因为内部就是用了双等号作比较
System.out.println(student.equals(student1));
}
}
3 字符串
3.1 String
字符串就是一系列的字符组合的串,在Java中单引号 '' 表示字符,双引号" "表示字符串。
字符串使用String类表示,值得注意的是它并不是基本数据类型,是引用类型。
3.2 声明字符串
3.1 直接创建
String str = "Hello World";
3.2 使用new创建
String str1 = new String("Hello World");
3.3 直接创建与new创建的区别
字符串池:当我们创建一个字符串时,JVM 会先对这个字符串进行检查,如果字符串常量池中存在相同内容的字符串对象的引用,则将这个引用返回;否则,创建新的字符串对象,然后将这个引用放入字符串常量池,并返回该引用。
public class trst06 {
public static void main(String[] args) {
//存在于字符串常量池中
String str1 = "HelloWorld";
String str2 = "HelloWorld";
// String 类型的实例
String str3 = new String("HelloWorld");
String str4 = new String("HelloWorld");
System.out.println(str1 == str2);
System.out.println(str1 == str3);
System.out.println(str3 == str4);
}
}
4.异常
异常是指程序在执行过程中,出现的非正常情况。比如:空的引用、数组下标越界、内存溢出错误、读取文件不存在、网络断开等。
异常的处理
4.1 throw
Java程序出现异常时会生成一个异常类对象,该异常对象将被提交给Java运行时系统,这个过程称为抛出(throw)异常。
4.2 throws
Java程序出现异常时将问题标识出来,报告给调用者,让调用者去处理。关键字throws运用于方法声明之上,用于表示当前方法不处理异常,而是提醒该方法的调用者来处理异常(如果调用者不处理,则接着抛出异常,甩锅)。
4.3 try...catch
try-catch就是捕获异常,可以对出现的异常进行指定方式的处理。(主动处理,不甩锅)
java
try {
// 可能出现异常的代码
} catch(异常类型1 e) {
// 当try里面发生异常类型1对应的异常时触发
// 这里是触发异常之后要执行的代码
} catch(异常类型2 e) {
// 当try里面发生异常类型2对应的异常时触发
// 这里是触发异常之后要执行的代码
}
public static void main(String[] args) {
try {
int i = 10 / 0;
// String str = null;
// str.length();
} catch (ArithmeticException e) {
// 出现数学异常时,执行这里的代码
System.out.println("数学异常");
} catch (NullPointerException e) {
// 出现空指针异常时,执行这里的代码
System.out.println("空指针异常");
}
// 这里的代码还是会执行,使用try...catch指定处理异常,程序不会中断
System.out.println("1");
}