java中的变量和方法详解

变量(Variable)

  • 声明:[修饰符列表] 类型 变量名;
  • 变量是以变量名所对应的内存地址为起点的一段内存,内存中存其值;内存大小由数据类型来决定。
  • 变量分为成员变量和局部变量,成员变量包括静态变量和实例变量。

成员变量
在类体中或在方法外声明的变量为成员变量,加static关键字为静态变量,不加的为实例变量。

静态变量

  • 不需要创建实例对象,直接使用类名进行访问,支持引用来访问(不建议),在方法区分配内存。
  • 初始化:类加载的时候不手动赋值按默认值初始化。
  • 生命周期:类加载的时候,会给静态变量分配内存,jvm退出的时候会释放掉。

实例变量

  • 只有在创建了实例对象之后才会被分配空间,使用引用来访问。当引用为null时访问,会出现空指针异常。在堆中分配内存。
  • 初始化:创建对象的时候不手动赋值按默认值初始化。
  • 生命周期:new对象的时候,开辟出内存空间·,对象没有引用的时候会变成垃圾回收器回收。

局部变量

  • 在方法内声明的变量为局部变量,局部变量存储在栈中。
  • 局部变量没有缺省值,必须手动赋值。

在什么时候声明静态变量,什么时候声明为实例变量?

  • 字段描述了现实世界中的事物的属性(静态方面)。
    • 静态变量相当于类级别的属性(字段),描述一类事物的共同特征可声明为静态变量。
    • 实例变量相当于对象级别的属性(字段),描述一个对象的独有特征可声明为实例变量。
    • 此处拿中国人来举个例子,都是黄皮肤,黑头发,可以声明为静态变量,每个中国人都有不同的名字,不同的身高,体重,可以声明为实例变量。

方法(Mothed)

  • 定义:[修饰符列表] 返回值类型 方法名([参数列表]){方法体}
  • 方法是以方法名所对应的内存地址为起点的一段内存,内存存储着一组机器语言。

普通方法在内存中怎么样运行的?

  • 方法不调用,在jvm中不会分配内存。
  • 方法区内存是独立的,可以重复调用,方法代码片段在方法区内存中只有一份,每次调用,在栈中分配所需内存空间。
  • 当方法调用时,会给该方法 分配内存空间,会在栈中发生压栈动作,方法调用结束,给该方法分配的内存全部释放掉,会发生弹栈动作。

实例方法

  • 不加static为实例方法,用引用来访问。

静态方法

  • 加static关键字为静态方法,用类名来访问,支持引用来访问,但是不建议。

什么时候定义静态方法,什么时候定义实例方法?

  • 方法则描述了现实世界中事物的行为(动态方面),表示干什么事。
  • 同类事物共有的行为定义为静态方法。
  • 对象特有的行为则定义为实例方法。

方法重载(OverLoad)

  • 在同一个类中,有两个或两个以上同名方法且参数不同的方法即是重载。

要求

  • 位于同一个类中。
  • 方法名相同。
  • 方法的参数列表不同(参数个数,参数类型,不同类型参数的顺序)。
  • 与方法的返回值和修饰符列表无关。

使用方法重载的好处

  • 方便了方法的调用。
  • 大大提升了代码可读性。
  • 构成方法重载的方法一般作用相似
public class Example1_1{
    public static void print(String str){
        System.out.println("String="+str)
    }
    public static void print(int i){
        System.out.println("int="+i)
    }
    public static void print(float i){
        System.out.println("float"+i)
    }
    public static void main(String[]args){
        print("123");
        print(123);
        print(1.23f);
    }
}

构造方法

  • java中每个类都有一个构造方法,它是类的一种特殊方法,构造方法与类名完全相同,对象的创建就是通过构造方法完成的,当类实例化一个对象时,类会自动调用构造方法。

构造方法特点如下:

  • 构造方法没有返回值,也不用void修饰,构造方法的默认返回类型就是对象类型本身。
  • 构造方法的名称要与本类的类名相同。
  • 构造方法可以重载。
  • 构造方法本身不能由用户直接调用,只有使用new创建对象时系统自动调用。
  • 构造方法不是明确要定义的,如果在类中没有明确地给出一个构造方法,java就会自动构造一个默认的无参构造方法,只要类中定义了任何构造方法,系统就不会再提供默认构造方法。
class E{
	
	public int x;
	public int y;
	
	public E(int x,int y){
		this.x =x;
		this.y =y;		
	}	
}
public class Demo {
	public static void main(String[] args) {
		
		E e=new E(5,10);
		System.out.println(e.x);  //5
		System.out.println(e.y);  //10
		
	}
}
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值