1.局部变量与成员变量
java 的局部变量和方法参数在栈区中分配,分配的大小是按照变量类型确定
成员变量在堆区中分配空间,而且自动赋初值
注:成员变量被包含在对象中。对象是在堆区中被分配,按照类中声明属性来分配空间
属性的访问方式 :引用。属性名 可以取值也可以赋值(静态访问)
方法的调用:
类的外部调用: 引用。方法名(参数)
类的内部调用:方法名(参数)
2.构造器(不能被继承)
用来描述对象创建过程的一个特殊方法
构造器
模型(类)————》对象
参数
1)构造方法的语法:
修饰符 类名(数据类型 变量名){
}
注:
1))java中的构造器声明在类的内部
2))方法名与类名相同的方法叫构造器
3))构造器不能声明返回值类型
4))构造器可以包含参数,参数一般都是创建对象所依赖的条件
2)。构造器重载
1))什么叫overLoad:相同的动作产生的结果却不同(方法表达的语义相同,但实现的过程却不同)
2))构造器的重载:
构造器的名称相同,构造器的参数列表不同
注:方法的重载是方法名相同,方法签名不同的方法
3))构造器重载的作用:为了方便用户使用构造器产生不同的对象,适应用户需求,实现 构造器的重用
3)默认构造器:
javac过程中,系统会自动加上一个无参构造器(前提是,类中没定义构造器)
4)this关键字:
this是当前对象的引用,是运行期当前对象的本身
可使用this明确当前对象的方法和属性
注:在类的内部,访问属性,this。属性名,其中this在没有局部变量和属性同名可以省略。
1)))this(参数列表) 使用它可以调用本类的其他构造器,可以使代码重用
2)))this(参数列表)必须写在构造器的第一行(对象在没有完成创建,其他的代码执行,都不符合常理)
5)方法:用来表示对象的功能,它依赖于对象而存在。方法是动作,一般使用动词来声明
6)代码分析示例:
Cal c=new Cal(2,3);
int result=c.add(XXX,XXX);
system.out.println(result);
1))
Cal c=new Cal(2,3);
1)))在堆区开辟一片空间,然后空间包含属性和方法的引用,为属性赋予零值
2)))调用对应构造器,构造器的调用也是一一映射,执行构造器的代码。将实参给构造器中的形参,将形参压入栈中
3)))在栈区中开辟一片引用空间(this)用来记录当前堆区中对象的首地址
4)))使用this.属性找到堆区中属性的位置,并对其赋予对应的值
5)))当构造器执行完,弹出构造器中局部变量
6)))方法执行到main方法中,在栈区中开辟引用空间c,然后赋值null
7)))将堆区中的对象的首地址赋值到栈中的引用
int result=c.add();
1)))使用c的空间存储的地址,找到堆区中的add()方法的引用
2)))再通过通过堆区中方法的引用,找到方法区中的方法以及方法体
3)))开始执行add()方法,将方法调用中的实参按照位置赋值给方法定义中的形参
4)))在栈区开辟空间,存储add方法的参数的值
5)))执行Cal的add方法,通过this.属性查找堆区中的值进行运算
6)))将运算的结果存储在栈区,在栈区开辟一个空间result(局部变量),将中间结果赋值给result
7)))将result的值作为放回值返回,这是add方法执行完毕
8)))将add中的局部变量弹栈,回到mian方法中,add将其放回值带回,在栈区开辟空间,用来存储方法的放回值
9)))在栈区中开辟空间result,并将方法的返回值赋值给result
system.out.println(result);
1)))找到栈区中result的值,输出
2))当main方法执行完毕,将栈区清空,垃圾回收器gc回收堆区中的空间,类装载器卸载方法区中的代码
分享到:
相关推荐
“尚硅谷JAVA基础笔记”涵盖了Java语言的基础知识,包括语言概述、基本语法、面向对象概念、封装、继承和多态,以及一些关键概念如形参与实参、属性与局部变量、构造器、this关键字、包和MVC设计模式的使用。...
"this"关键字在Java中用于引用当前对象,常用于构造器链、避免成员变量和局部变量的混淆,以及在匿名内部类中引用外部类的成员。这个PPT文件可能详细解释了this关键字的用法和应用场景。 3. **Execution_files** - ...
`this`关键字代表当前对象的引用,常用于区分成员变量和局部变量。 ##### 6.6 访问控制符 Java提供了四种访问修饰符:`public`、`private`、`protected`和`default`,用于控制类、方法和变量的可见性。 ##### 6.7...
- **局部变量**:在方法、构造器或块中定义的变量。 - **实例变量**:在类体中声明但位于任何方法之外的变量。 - **类变量(静态变量)**:用 `static` 关键字修饰的变量。 - **参数**:传递给方法或构造器的值。 #...
但是成员变量和局部变量都能被final所修饰。 2. 从变量在内存中的存储方式来看,成员变量是对象的一部分,而对象存在于堆内存,局部变量存在于栈内存。 3. 从变量在内存中的生命周期来看,成员变量是对象的一部分,...
- **作用域**:成员变量在整个类中都有效,而局部变量(定义在方法内的变量)仅在其所在的方法或代码块内有效。 **2. 静态与非静态成员的区别** - **静态成员**(`static`修饰):由类的所有实例共享,可以通过...
- 局部变量:存在于方法、构造器或块中,生命周期仅限于该方法、构造器或块的执行期间。局部变量必须在使用前初始化。 7. Java的命名规范: - 包名:所有字母小写,如`xxxyyyzzz`。 - 类名和接口名:每个单词首...
3. 局部变量(Local Variables):这些变量只在方法、构造器或块中有效,它们的生命周期仅限于声明它们的代码块。局部变量必须在使用前初始化。 Java的命名规范不仅适用于变量,还包括包名、类名、接口名、方法名和...
根据给定的学习笔记文档,我们可以将Java中的变量大致分为两大类:成员变量与局部变量。 - **成员变量**: - 成员变量又可以进一步划分为实例变量与类变量。 - **实例变量**:在类中定义但未被`static`修饰的变量...
- 栈内存存储局部变量,自动释放。 - 堆内存用于存储数组和对象,由new创建的实例存放于此。 - 方法区存储静态成员、构造函数等。 - 本地方法区是操作系统级别的,如Windows的寄存器。 15. 面向对象: - 面向...
- this关键字:指代当前对象,用于区分成员变量和局部变量,调用本类的其他构造器。 - static关键字:静态成员属于类,不依赖于类的实例,常用于创建单例、静态变量和静态方法。 - final关键字:用于声明不可变的...
2. **Java语法基础**:包括数据类型(如整型、浮点型、字符型、布尔型和引用类型)、变量(局部变量、成员变量、常量)以及运算符(算术、关系、逻辑、位、赋值等)的使用。 3. **控制结构**:学习如何使用条件语句...
局部变量存在于栈内存,随着方法调用结束而销毁。 10. **异常处理**: - 异常是程序运行时的非正常状态,分为`Exception`和`Error`。 - `Exception`是可以被程序捕获和处理的,`Error`通常是严重问题,如JVM内部...
2. **成员变量与局部变量**:成员变量是类的一部分,定义在类的主体中,而局部变量则声明在方法、构造器或者块中。成员变量属于类的实例,局部变量只在声明它的作用域内有效。成员变量有默认初始化值,而局部变量...
可以访问外部类的成员变量,但不能访问局部变量,除非这些局部变量是final的。 4. 匿名内部类(anonymous inner class):没有名称的内部类,通常用于实现接口或继承抽象类,并且只在定义的地方使用。在编写简洁的...
JavaScript 学习笔记 JavaScript 基础知识 ...* JavaScript 类可以使用 `function` 关键字声明,类可以有构造方法和成员变量。 * JavaScript 类可以使用 `prototype` 属性来继承其他类的成员变量。
- **局部变量**:在方法、构造器或者块内声明,作用域仅限于声明它的代码块,生命周期从声明时开始,到该代码块执行结束时结束。 - **成员变量**:也称为实例变量,属于类,不属于任何方法,作用域在整个类中,...
- 局部变量在方法、构造器或者块中声明,它们存储在栈中,生命周期仅限于它们所在的代码块。 - 成员变量(包括实例变量和静态变量)属于类,实例变量存储在堆中,静态变量存储在方法区(常量池)。 6. **面向对象...
局部变量则是在方法内部定义的,它们的作用域仅限于该方法。类方法中的特殊方法是构造方法,用于初始化新创建的对象。构造方法的名称与类名相同,且没有返回值。创建对象时,通过`new`关键字调用构造方法: ```java...
- **求100以内奇数之和**: ```java public static void parity() { int result = 0; for (int i = 1; i ; i++) { if ((i & 1) == 1) { // 使用位运算判断奇偶性 result += i; } } System.out.println(...