java 局部对象_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对象存储在   堆内存中;

ef67610ddab62d44b86090a670c43fac.png

【注意】:多个引用变量  可以指向同一个对象;

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();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值