「JavaDay7」学习心得

JavaDay7学习心得

代码地址:https://github.com/Philbenzy/Java-question-100/tree/main/day7
我的个人博客:https://blog.csdn.net/Wang_Pro?spm=1019.2139.3001.5343

1:局部变量和成员变量的区别?

(a) 定义的位置不同

​ 局部变量:在类的方法中出现

​ 成员变量:在所有类的方法外出现

(b) 所属不同

​ 局部变量:属于这个类中的某个方法,出现在栈内存

​ 成员变量:属于这个类自身,出现在堆内存

© 共享不同

​ 局部变量:仅对某个具体的类内方法有效

​ 成员变量:所有的对象都可以进行访问

(d)生命周期不同

​ 局部变量:当方法执行完毕后被回收

​ 成员变量:随着对象的创建而创建出来

(e)初始化值不同

​ 局部变量:没有初始化值,需要对方法进行赋值才能使用

​ 成员变量:有初始化值,int 为 0,String 为 null,boolena为 false

2:形式参数分别为基本类型和引用类型的问题?

基本类型:基本类型数据就是不需要new出来的类型

引用类型:引用类型包括类、对象、接口、数组等,需要new出来的

如下代码块

class Student{
    public void method(){
        System.out,println("我爱学习Java")
    }
}

class Teacher{
    public void method(Student s){
        s.method	//在Teacher类型中,使用引用类型调用Student类;
    }
}

class StudentDemo{
    public static void main(String[] args){
        Student s = new Student();
        
        Teacher t = new Teacher(s);	//传入引用类型参数
        t.method();
    }
}

3:匿名对象是什么?应用场景是什么?

代码示例:MyNoName.java

匿名对象不需要指定对象的名称,适用于只调用一次该类对象的方法,调用完成后,就被垃圾回收。

4:封装是什么?Java中封装的体现有哪些?请举例说明。

(a)可以隐藏实现的细节

(b)提高代码的复用性

(c)Java中体现出的复用有使用private关键字,修饰类、成员变量、方法。

5:this关键字是什么?this关键字的应用场景?

我们知道,局部变量是可以与成员变量命名成相同的,但是还有一个注意事项,在方法中使用时,采用就近原则。所以,当向成员变量赋值时,为了防止在参数传入时因为就近原则互相覆盖,提出this关键字

使用「this.成员变量」的方式

解决局部变量隐藏成员变量的情况。

6:构造方法的作用是什么?构造方法的特点是什么?构造方法的注意事项是什么?构造方法中可不可以写return语句呢?

构造方法用来对对象初始化赋值,构造方法的特点在于:

(a) 必要可以自己写,也可以使用类中默认的构造方法,但是一旦自己写,默认方法自动消失

(b) 构造方法没有具体的返回值,所以没有void关键字

© 构造方法的命名与类对象名称相同

(d) 构造方法之间也可以重载

构造方法中虽然没有return语句,但是也可以写,因为「return;」标志着一个方法的结束

7:给成员变量赋值有几种方式?

(a) 使用构造函数赋值

(b) 使用函数内部的方法setXxx()

8:标准的代码编写及测试:

A:学生类的案例:MyStudentTest.java
B:手机类的案例:MyPhoneDemo.java
C:长方形类的案例:CangFangXingDemo.java

9:一个类的成员变量初始化过程解释 Student s = new Student();

代码块:

class Student {
			private String name;
			private int age;
			
			public Student(){}
			
			public Student(String name,int age) {
				this.name = name;
				this.age = age;
			}
			
			public String getName() {
				return name;
			}
			
			public void setName(String name) {
				this.name = name;
			}
			
			public int getAge() {
				return age;
			}
			
			public void setAge(int age) {
				this.age = age;
			}
		}
		
		测试:
		class StudentDemo {
			public static void main(String[] args) {
				Student s2 = new Student("刘意",30);
				System.out.println(s2.getName()+"---"+s2.getAge());
			}
		}

(1) 将class文件加载加载到内存

(2) 在栈内存中为s变量开辟空间

(3) 在堆内存中加载Student类

(4) 默认初始化Student的成员变量 name age

(5) 显示初始化Student的成员变量name = “刘意” age = 30

(6) 成员构造完毕,将堆内存中的地址赋值给栈中的s

10:static关键字是什么?有什么特点?什么时候用呢?

静态关键字,用来修饰成员变量与方法,特点在于:

(1) 随着类加载而加载

(2) 可以通过类名调用,无需创建对象

(3) 优先于对象而存在

(4) 被staitc修饰的关键字,被所有对象共享

(5) 静态方法与静态变量存储在方法区中

(5) 静态变量与成员变量相比较,具有不同的生命周期

11:main方法各种修饰符及参数的解释? public static void main(String[ ] args) 的解释

public : 权限修饰符,给jvm足够大的权限

static: 静态修饰符,以前说明过,静态方法可以通过「类名.静态方法」进行调用;

void:不需要返回给JVM什么东西,没有意义

main:JVM识别的入口

(String[ ] args) : 早期Java没有Scanner对象,所以使用「java 主程序名称 xxxx」这样的方式录入字符串,现在就不需要了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值