Java中关于成员变量初始值、内部类、异常处理

本文详细探讨了Java中成员变量的初始值、Object类的方法如equals和toString()、instanceof关键字的用法。进一步讲解了内存分析,包括堆、栈、代码区和数据区的划分。在内部类方面,介绍了成员内部类、局部内部类、匿名内部类及其实际开发应用。此外,还讨论了异常处理,包括异常分类、处理语法以及抛出异常的技巧。建议避免过度使用`throws`和`throw`。
摘要由CSDN通过智能技术生成

目录

成员变量初始值

 Object

equals和==

toString()方法

instanceof关键字

内存分析

参数传递问题

内部类

成员内部类

局部内部类

 匿名内部类

匿名内部类在将开发中的使用

异常处理

 异常的分类

异常处理的语法句子 

抛异常处理throws和throw【少用为妙】


成员变量初始值

java中的变量必须先声明,后赋值才能使用。
java中的成员变量,在创建对象的时候,都会执行一次初始化操作,都会给一个默认值。
public class Test {
    public static void main(String[] args) {
//        int n;
//        System.out.println(n);//会报错:可能尚未初始化变量n
    }
}
byte b;//byte=0
short s;//short=0
int i;//int=0
long l;//long=0
float f;//float=0.0
double d;//double=0.0
char c;//char= //注意这里是有一个空格的
//System.out.println("char="+(int)p.c);//强转成int型-->0
boolean bool;//boolean=false
String str;// String是Java提供的一个类//String=null
Child child;//自己写的类Child的默认值//Child=null

 Object

万事万物皆为对象
所有的东西都是对象
在Java中所有的类都要继承object
object是一个类,所有类的根
我们的写的类即使不写继承关系,那么默认也会继承object
【创建一个Person class但是里面什么都不写】
【Student会继承Person类同时也会继承object类,因为object是一个类,所有类的根】
public class Student extends Person{
    public static void main(String[] args) {
        Student s=new Student();
        //s.//默认也会继承object
    }
}

equals和==

equals和==
==判断左右两端的数据是否一致
equals:object类提供的一个方法,用来判断两个对象是否相等
【这里的相等并非一般情况的相等
两只猫的颜色一样可以称为相等
两只猫的中重量相等也可以成为相等】
equals可以自己重写

字符串的判断必须使用equals  可以帮我们判断内容分是否相同
public class Cat {
    String name;
    String color;


    public Cat(String name, String color) {
        this.name = name;
        this.color = color;
    
    public static void main(String[] args) {
        //创建两个对象,他们的内存地址是不一样的
        Cat c1 = new Cat("球球", "黑白相间");
        Cat c2 = new Cat("球球", "黑白相间");

        System.out.println(c1 == c2);
        //false  双等默认判断的是两个对象的内存地址是否一致,一般用在基本数据类型上,判断两个数是否相等
        System.out.println(c1.equals(c2));
        //false  object提供的equals方和==实际上是没有区别的
    }
}
public class Cat {
    String name;
    String color;


    public Cat(String name, String color) {
        this.name = name;
        this.color = color;
    }

    //如果父类的满足不了就可以在子类中自己写equals方法
    public boolean equals(Cat c) {
        //单纯的去写判断的逻辑
        if (this.color == c.color) {
            return true;
        } else {
            return false;
        }
    }

    public static void main(String[] args) {
        //创建两个对象,他们的内存地址是不一样的
        Cat c1 = new Cat("球球", "黑白相间");
        Cat c2 = new Cat("球球", "黑白相间");

        System.out.println(c1 == c2);
        //false  双等默认判断的是两个对象的内存地址是否一致,一般用在基本数据类型上,判断两个数是否相等
        System.out.println(c1.equals(c2));
        //false  object提供的equals方和==实际上是没有区别的
        //写了之后就会返回ture
    }
}

注意: 字符串是例外的!!!这里不会报错

public class Cat {
    public static void main(String[] args) {
        
        //注:字符串是例外的
        //str1 、str2使用的是同一个内存地址
        String str1 = "小鲁";
        String str2 = "小鲁";//并没有单独的占内存空间
        System.out.println(str1 == str2);//ture
        System.out.println(str1.equals(str2));//ture
    }
}

 注意区别:这个时候新建了一个对象,虽然最初的内存地址是一样的但是new出来的str3和str4是不一样的是一个新的对象然后所以此时的内存地址是不一样的

public class Cat {
    public static void main(String[] args) {
        String str3 = new String("鲁正婷");
        String str4 = new String("鲁正婷");

        System.out.println(str3 == str4);//false  判断的是内存地址是否一致
        System.out.println(str3.equals(str4));//true  判断两个字符串的内容是否一直

        //字符串的判断必须使用equals  可以帮我们判断内容分是否相同
    }
}

一个关于字符串的小练习:

!!!注意equals和==的区别!!!

//小练习模拟用户登录

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        String Username = "admin";
        String Password = "12
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小鲁不吃猪蹄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值