内部类,object,字符串,异常

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");
  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值