Java-类与对象

Java-类与对象

学习参考书籍:清华大学出版社的《Java2实用教程》



前言

Java是面向对象的编程语言,《Java2实用教程》的第四章开始讲解类与对象,以下是我的学习笔记。有错误的地方,欢迎指正,谢谢!

提示:以下是本篇文章正文内容,下面案例可供参考

一、类

类体中包含成员变量(表示属性)成员方法(表示行为)
成员变量

  1. 成员变量的类型可以是java中的任何一种数据类型(引用类型:数组、对象、接口也算在内)。
  2. 成员变量由初始值(构造方法初始化)。
  3. 成员变量的有效性与位置无关,但书写习惯是先介绍属性再介绍行为。

方法

  1. 方法体内的是局部变量,如果成员变量和局部变量名字相同,那么成员变量被隐藏,在该方法中暂时失效。
    如果想使用被隐藏的成员变量,必须使用this关键字。

  2. 局部变量没有默认值,如果不指定一个值,会编译错误。

  3. 对成员变量和局部变量的操作只能在方法中

二、构造方法与对象

类是一种数据类型,用类声明的变量叫对象
当使用类创建一个对象时,称给出了这个类一个实例

1、类、对象和实例的关系

类–>对象–>实例
人类是类
某个人是对象
你是实例
实例本身也是对象

表现出来是这样的
String 类
String str str是对象
String str = “abc”; "abc"是实例,也是对象
引自:http://www.blogjava.net/dreamstone/archive/2007/03/04/101733.aspx

对象的变量是它的实体

2、构造方法

1.构造方法与类的名字相同,但没有类型,无返回值
2.可以在一个类中写多个参数不同的构造方法
3.如果没有编写构造方法,系统会自动创建一个没有参的方法

3、创建对象

class A{
	public static void main(String srgs[]){
		A a;//声明对象a
		a=new A();//用new关键字和构造方法,为对象分配变量
	}
}

4、匿名类&匿名对象

有名字的类/对象可以重复使用,匿名的没有地址值,使用一次之后就找不到了。
可以在垃圾回收器空闲时回收,节省内存空间。
引自:https://blog.csdn.net/m0_58052874/article/details/123209100

new A()是一个匿名对象,可以用它访问自己的变量

new A().name="Kim";
I]

5、垃圾收集

Point p1=new Point(100,200);
Point p2=new Point(300,500);
p1=p2;//让p1和p2的引用相同

如果让两个对象的引用相同,系统会取消原先分配给p1的变量。Java的垃圾手机机制会自己发现栈中不再被使用的对象,释放内存。不需要像C++一样,需要程序员释放。因此Java很少出现内存泄漏(因为程序忘记释放而导致的内存溢出)。

三、方法的参数

1、形参和实参的关系

方法()里的是形参,向其传值的是实参
实参和形参的值不互相影响
∵参数属于局部变量 ∴调用参数变量必须有具体的值(传给它)

代码


class canshu{
    int m,n;
    int getInt(int a,int b){
        a=500;
        return b;
    }
}
public class test2 {
    public static void main(String args[]){
        int x=100,y=300;
        canshu A=new canshu();
        int changeY=A.getInt(x,y);
        System.out.println(x);//在方法中改变a的值,x的值并没有改变。说明形参的改变不会影响实参。
        y=-100;
        System.out.println(changeY);//在main方法中改变了y的值,但changeY没有改变,说明实参的改变不会影响实参。
    }
}

结果

"C:\Program Files\Java\jdk-20\bin\java.exe" "-javaagent:E:\IntelliJ IDEA Community Edition 2023.2.1\lib\idea_rt.jar=18924:E:\IntelliJ IDEA Community Edition 2023.2.1\bin" -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath E:\JAVA_STUDY\Demo\out\production\oop test2
100
300

Process finished with exit code 0

参数如果是引用型数据,“传值”是地址,不是实体。
如果改变实体,原实体也会改变。
如果改变地址,则不会影响原地址(引用)

2、可变参数

不给参数的名字和个数,参数类型必须相同,用…表示若干参数

void f(int...x){
	//称x是f方法中可变参数的“参数代表”
}

参数代表必须是参数列表的最后一个

void f(double y,int...x){
//称x是f方法中可变参数的“参数代表”,double y不可以放在后面
}

运用可变参数的方法:
使用参数代表[下标](从0开始来代表1~m个数字)
java提供了增强for语句 ,for(声明循环变量:参数代表)

for(int i:x){
//循环变量x,遍历参数代表所代表的参数
}

3、黑盒复用


关联关系

A的成员对象是B声明的对象

依赖关系

A类中某方法的参数是B声明的对象/返回值是B类对象

四、实例和类

1、实例变量 和 类变量

1.有static修饰的是类变量,也称static变量,静态变量。static不可以修饰局部变量。
2.不同对象的实例变量各自有内存空间,不互相影响。
3.类变量是所有对象共享的
4.类变量是可以通过类名访问的

2、实例方法和类方法

1.实例方法中可以调用类变量、类方法、实例变量、实例方法。而类方法只能操作类变量,调用类方法。
2.类方法可以用类名调用

3、重载

`1.java中有两种多态:重载和重写。重写和继承有关
2.构造方法也可以重载
3.两个或多个名字相同,但参数数量/类型不同的方法,叫做重载
4.如果出现歧义,将无法通过编译

4、this关键字

1.this可以出现在实例方法和构造方法中,但不能出现在类方法中。
2.在构造方法中出现的this,指代正在创建的对象
3.在实例方法中出现的this,指调用该方法的对象
书写规范:
在实例方法中,static对象的默认格式是 类名.static成员变量名;实例对象的默认格式是this.实例对象名。
可以省略实例对象前的this.和static对象前的类名 。当实例对象和类对象同名时,不可省略。

五、包

1.为来区别名字相同的类,需要用包。

总结

滚去复习了…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Yuexin️

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

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

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

打赏作者

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

抵扣说明:

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

余额充值