JAVA自学课程笔记2

20211242320分
JAVA自学课程笔记2:

	代码执行过程中的内存管理:
		1.heap(堆区)
			由A aa = new A();new出来的东西
		2.stack(栈区)
			代码的局部变量
		3.data segment(数据区)
			存放静态变量、字符串常量
		4.code segment(代码区)
			存放代码

		堆区存放的类(class)A aa1所指向其栈区存放的两个整型变量a、b
		(class A{int a;int b;}),若也让类A的aa2赋值以aa1,则aa2指向aa1其栈区的两个整型变量a、b。改变aa1的栈区变量,相当于改变aa2的栈区变量。
	
	类的访问控制符:
		在一个类的内部,所有的成员是可以互相访问,访问控制符是透明的;访问控制符是针对外部访问而言的。
		外部访问包括两种方式:
			通过类名访问内部的成员
			通过类对象名访问内部成员。
		1.默认(无任何修饰符,即default)。
			允许外部直接访问。
		2.protect
			在不同包中不允许互相访问。
		3.private
			不可以通过外部访问方式访问内部private成员。
			若定义一private变量a,则可以通过在a所在的类中构造一个public方法(public void set(int j){a=j;})来在外部改变变量a的值。
		4.public
			可以通过外部访问方式访问内部public成员。

	构造函数:
		构造函数在生成(new)一个新类时,该类中的构造函数会被调用。
			class A
			{
				public A(){
					System.out.println("无参构造函数调用");
				}
				public A(int a,int b){
					System.out.println("有参构造函数调用");
				}
			}

			class Test
			{
				public static void main(String[] args) 
				{
					A aa1 = new A(1,2);
					A aa2 = new A();
				}
			}
			运行结果:
				有参构造函数调用
				无参构造函数调用
		构造函数是无返回值的,不需要void来定义。
		构造函数的名称应与其所属的类相同。
		如果不写构造函数,默认生产一个无参的构造函数(如果已写一个有参构造函数,用无参数外部调用,会报错)。

	函数的重载:
		功能相似的多个函数,可以在类型,形参个数,访问控制符不同的情况下,使用相同的函数名。(不违反查找冲突的情况下)
			class A{
			    public int f(int a, int b){
				return (a + b);
			    }
			}

			class B extends A{
			    public int f(double a, int b, int c){
				return (int)(a + b + c);
			    }
			}

			public class Test1{
			    public static void main(String[] args){
				B bb = new B();
				System.out.println(bb.f(1.7, 2, 3));
			    }
			}
			//输出结果:6

	在类中定义一变量,该变量为此类的属性。在定义后不附值,外部引用时相当于已初始化(值可以为:00L0.0F0.0D,\u0000()FalseNull),因为其看作为类的属性。而若是在所引用的类中定义一变量不附值,则看作非初始化局部变量报错。(属性不初始化是零值,局部变量不初始化是垃圾值。)

	this指针:
		this == 当前对象
		当创造于同一个类A上的两个不同对象aa1和aa2时,原先基础的类定义中的public整型i不被共用,但存在一非static方法public void show()(能打印出i)被aa1和aa2共用,show方法通过隐含的this指针知道目前正在调用该方法的对象。
		定义时等同于:
			public void show(){
				System.out.printf("i = %d\n",i);
			}

			==
			
			public void show(A * this){
				System.out.printf("i = %d\n",(*this).i);
			}
		调用时等同于:
			aa1.show();

			==

			aa1.show(aa1);
		若在一个类A中存在一个公共整型变量i,同时在该类的构造函数中也定义了一个形参i。当想要把构造函数中的i发送到公共变量i中时,可以使用this指针表示当前正在调用的对象aa1,this.i相当于对象aa1中的公共整型变量i。
			class A{
				public int i = 99;

				public A(int i){
					this.i = i;	//this代表目前正在创建的对象
					System.out.printf("%d\n",i);
				}

				public void show(){
					System.out.printf("%d\n",this.i);
				}
			}
		通过A aa = new A(2);和aa.show();语句得到输出结果:
			2
			2


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值