JavaSE---类、对象、成员变量、局部变量
1、概述
1.1 类
1.1.1 类 是一种 自定义的 引用 数据类型;
1.2 对象
1.2.1 创建对象的根本途径:构造器; 通过new关键字 来调用 某个类的构造器;
package com.an.faceobject;
public class Person {
String name;
Integer age;
public Person(){
}
public Person(String name,Integer age){
this.name=name;
this.age=age;
}
Person p=new Person("jack",12);
}
Person p=new Person("jack",12);
p存储在 栈内存中,存储着Person对象在内存存储的地址值;
Person对象存储在 堆内存中;

【注意】:多个引用变量 可以指向同一个对象;
package com.an.faceobject;
public class Person {
String name;
Integer age;
public Person(){
}
public Person(String name,Integer age){
this.name=name;
this.age=age;
}
Person p=new Person("jack",12);
//p1,p2均指向同一个Person对象
Person p1=p;
Person p2=p;
}
【注意】:当一个对象不被任何引用变量引用时,java的垃圾回收机制将会将其内存回收;
可以显式将Person p=null; Person p1=null; Person p1=null; 切断对象与引用变量的关系;
1.3 成员变量:
1.3.1 定义在 类 范围内的、无需显式初始化;
1.3.2 包括 类变量(static修饰) 、对象变量;
1.3.3 只要 类存在,程序就可以访问该类的变量(类.属性);
1.4 局部变量:
1.4.1 定义在 方法 内的、必须显式初始化;
1.4.2 只要对象 存在,程序就可以访问该对象的变量(对象.属性);
1.4.3 对象 也可以直接访问类属性(对象.类属性);
但是 一旦对类属性值进行修改,则类属性值将会改变,其他对象访问均是改变后的值;
package com.an.faceobject;
public class Person {
String name;
Integer age;
static String sex="man";
public Person(){
}
public Person(String name,Integer age){
this.name=name;
this.age=age;
}
public static void test(){
Person p=new Person("jack",12);
p.sex="female";
}
public static void main(String[] args){
System.out.println("pre:"+sex);
test();
System.out.println("after:"+sex);
}
}
结果:
pre:man
after:female
1.4.4 局部变量根据定义形式的不同,分为:
a,方法形参:
方法声明时定义;
方法内有效;
无需显式初始化,在调用时由系统完成;
b,方法局部变量:
方法体内定义;
方法内有效;
必须显式初始化;
c,代码块局部变量:
代码块中定义;
代码块内有效;
1.4.5 java中允许成员变量与局部变量同名,但是局部变量值会覆盖掉成员变量值,如果要使用成员变量值,可以使用对象.属性(类.类属性) ;
package com.an.faceobject;
public class Person {
String name="jack";
public static void main(String[] args){
String name="rose";
System.out.println(name);
System.out.println(new Person().name);
}
}
结果:
rose
jack
1.5 静态成员与非静态成员调用:
静态方法 中可以直接调用同类中静态成员;
静态方法 中如果想 调用非静态成员,需要创建对象,由对象调用;
非静态方法 中可以直接访问静态变量、非静态变量:
package com.an.faceobject;
public class Person {
String name;
Integer age;
static String sex="man";
public void test1(){
//普通方法中直接调用静态变量、非静态变量
sex="";
name="";
}
public static void test(){
Person p=new Person();
//静态方法中可以由对象来调用非静态方法
p.test1();
}
}
JavaSE---类、对象、成员变量、局部变量的更多相关文章
- 【IOS 开发】Object - C 面向对象 - 类 , 对象 , 成员变量 , 成员方法
. 一. 类定义 类定义需要实现两部分 : -- 接口部分 : 定义类的成员变量和方法, 方法是抽象的, 在头文件中定义; -- 实现部分 : 引入接口部分的头文件, 实现抽象方法; 1. 接口部分定 ...
- 派生类地址比基类地址少4(CDerived对象的起始地址存放的是虚表指针vptr,也就是子类的第一项内容。接下来的是基类的成员变量,接下来再是自身的成员变量)
大家对虚表并不陌生,都知道每个含有虚函数的类对象都有1个虚指针,但是在现实使用中,却总是因为这而调试半天,才发现原来是虚指针惹的祸.我这几天在调试代码时候也中招了,我的问题是这样的,如下图,CTree ...
- JavaSE 面试题: 成员变量与局部变量
JavaSE 面试题 成员变量与局部变量 public class Test { static int s; int i; int j; { int i = 1; i++; j++; s++; } p ...
- python中的类的成员变量以及property函数
1 python类的各种变量 1.1 全局变量 在类外定义的变量. 1.2 类变量 定义在类里面,所有的函数外面的变量.这个变量只有一份,是所有的对象共有的.在类外用“类.”来引用. 1.3 实例变量 ...
- fielderror里的fieldName代表的是jsp里的fieldName还是Action类的成员变量?(待解答)
1.值栈的Action对象中会有一个fielderror属性,代表着字段错误. fielderror是Map<String,List<String>>类型 例如下面的值栈里可看 ...
- 成员变量&&局部变量
一.相同点:1.都遵循变量的声明格式:(修饰符) 数据类型 变量名=初始化值 2.都有各自的作用域 二.不同点:1.声明的位置不同 成员变量:声明在类内,方法外. 局部变量:声明在方法内. ...
- C++类中成员变量的初始化总结(转帖)
本文转自:C++类中成员变量的初始化总结 1. 普通的变量: 一般不考虑啥效率的情况下 可以在构造函数中进行赋值.考虑一下效率的可以再构造函数的初始化列表中进行. 1 class CA ...
- [C++] 类的成员变量和成员方法
类具有成员变量和成员方法 成员变量用来描述某个对象的具体特征,是静态的,也称为成员属性,这些属性一般设置为私有,仅供类的内部使用. 成员方法用来描述某个对象的具体行为,是动态的,也成为成员函数,这些属 ...
- Java采用反射技术创建对象后对目标类的成员变量和成员方法进行访问
实现: package com.ljy; import java.lang.reflect.Field; import java.lang.reflect.Method; /** * * @Class ...
- 深入理解PHP内核(十四)类的成员变量及方法
原文链接:http://www.orlion.ga/1237/ 类的成员变量在PHP中本质是一个变量,只是这些变量都归属于某个类,并且给这些变量是有访问控制的. 类的成员方法在PHP中本质是一个函数, ...
随机推荐
- Autoit3域用户的登陆统计
#include <ACN_NET.au3> If @OSArch="X86" Then $fileURL=@CommonFilesDir & "\S ...
- 禁止打开 F12 开发者工具
禁止F12 window.onkeydown = window.onkeyup = window.onkeypress = function (event) { // 判断是否按下F12,F12键码为 ...
- SQL Server 2008 R2 数据库备份文件.bak如何挂载到【阿里云·独立虚拟主机数据库】上
1.前言 8月份刚刚开始,公司[工作流]挂了,实体服务器会自动重启,数据库死活起不来,这可是计算工资提成的事儿,不能马虎! 在实体服务器中,找到了OA页面源码与数据库的.MDF 与 .LDF 等文件. ...
- vue cli 项目中设置背景图
https://blog.csdn.net/MoLvSHan/article/details/78204972 不能直接写成相对路径,像下面这这种就会报错 backgroundImage: " ...
- 三、PCB设计与Allegro基本概念
PCB:印制电路板 如--update更新时无法变为0 4.区域规则--设置区域规则--赋予区域轮廓 5.铜皮 把.sav改为.dsn--就可以恢复出突然关闭的.dsn文件 生成规则钻孔文件(.drl ...
- bugku | 你从哪里来
题目链接 之前一直以为要用x-forwarded-for ,谁道用的是referer,Orz.在此特地记录,x-forwarded-for 和 referer的区别 X-Forwarded-For(X ...
- [CSP-S模拟测试]:v(hash表+期望DP)
题目背景 $\frac{1}{4}$遇到了一道水题,又完全不会做,于是去请教小$D$.小$D$看了$0.607$眼就切掉了这题,嘲讽了$\frac{1}{4}$一番就离开了.于是,$\frac{1}{ ...
- Django中的get()和filter()区别
前言 在django中,我们查询经常用的两个API中,会经常用到get()和filter()两个方法,两者的区别是什么呢? object.get()我们得到的是一个对象,如果在数据库中查不到这个对象或 ...
- 2018-2019-20175203 实验二 《Java面向对象程序设计》
2018-2019-20175203 实验二 <Java面向对象程序设计>实验报告 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑 ...
- springBootJpa 联表分页查询总数不准的问题
问题情景: 在联表查询时 ``` // 两张表关联查询 Join<Project, Plan> planJoin = root.join("plans", JoinTy ...