Java变量的初始化以及静态方法

1.变量初始化

 1 package treat;
 2 class InitializeBlockClass
 3 {
 4     public int field=100;
 5     {
 6         field=200;
 7     }
 8     public InitializeBlockClass(int value)
 9     {
10         this.field=value;
11     }
12     public InitializeBlockClass()
13     {
14
15     }
16 }
17
18 public class treat {
19     public static void main(String args[])
20     {
21         InitializeBlockClass obj=new InitializeBlockClass();
22         System.out.println(obj.field);
23         obj=new InitializeBlockClass(300);
24         System.out.println(obj.field);
25     }
26 }

在main函数中第一次输出是200,第二次是300,这是因为第一次调用的是默认构造函数,而类中的变量在之前已经初始化,而构造函数并不能改变变量的值所以变量值是初始化框里的200,第二次调用了带参数的构造函数,构造函数直接将值返回,就算构造函数在前输出的值也一样都是300.

2.如何在静态方法中调用非静态方法和字段

 1 package treat;
 2
 3 public class treat {
 4
 5     public int dg=0;
 6     void fun()
 7     {
 8         System.out.println("hello world!!");
 9     }
10     static void play(treat a)//通过形参传递对象实现非静态方法的调用
11     {
12         a.fun();
13         a.dg=8;//调用对象改变非静态字段的值
14         System.out.println(a.dg);
15     }
16     public static void main(String args[])
17     {
18         treat a=new treat();
19         treat.play(a);
20     }
21 }

在上面的程序中可以发现可以通过形参传递对象的方法来调用非静态方法和字段。

  

  

原文地址:https://www.cnblogs.com/w669399221/p/11695261.html

时间: 2024-10-04 03:07:07

Java变量的初始化以及静态方法的相关文章

Java变量方法初始化顺序

面试的时候,经常会遇到这样的考题:给你两个类的代码,它们之间是继承的关系,每个类里只有构造器方法和一些变量, 构造器里可能还有一段代码对变量值进行了某种运算,另外还有一些将变量值输出到控制台的代码,然后让我们判断输出的结果.这实际上是在考查我们对于继承情况下类的初始化顺序的了解. 我们大家都知道,对于静态变量.静态初始化块.变量.初始化块.构造器,它们的初始化顺序以此是 (静态变量.静态初始化块)>(变量.初始化块)>构造器. 我们也可以通过下面的测试代码来验证这一点: 父类--静态变量 父类

Java变量的初始化问题探究

对于java的变量,我们知道有成员变量和局部变量. 关于他们的初始化,基本上所有书上都会写.成员变量,java会帮助你初始化,局部变量,则需要程序员自己初始化. 对于类的成员变量.不管程序有没有显示的初始化,Java  虚拟机都会先自动给它初始化为默认值. 规则为: 1.整数类型(byte.short.int.long)的基本类型变量的默认值为0. 2.单精度浮点型(float)的基本类型变量的默认值为0.0f. 3.双精度浮点型(double)的基本类型变量的默认值为0.0d. 4.字符型(c

java变量的初始化

public class Init { private int age;//非静态初始化语句<3> private static String name; //静态初始化语句,先初始化静态 <1.1> /**静态初始化语句和静态初始化模块都是静态(同等级),谁在前面先初始化谁*/ {/**动态初始化模块(非静态初始化模块)<4>*/ double width; float price; System.out.println("父类非静态"); } s

[Java]变量及其初始化 与 类对象的初始化

1 变量的初始化 1.1 变量的[定义] 1.2 变量的[作用域] 1.3 变量的[初始值] 1.4 补充:缓存变量 1.5 变量的[分类]与[未初始化情况] 2 类对象 2.1 类对象的初始化/构造过程 1 [对象]的初始化流程 2 实验 class Base{ static { System.out.println("[Base:static area]"); }//step1 { System.out.println("Base:instance area")

Java变量初始化的时机

对于JAVA中变量的初始化是一个很基础的问题,其中的一些问题也是易被学习者所忽略.当在编写代码的时候碰到时,常被这些问题引发的错误,感觉莫名其妙.而且现在许多大公司的面试题,对于这方面的考查也是屡试不爽.以下是对java变量初始化的时机的分析. [java变量执行初始化的步骤] java是一门强类型语言,因此java语言规定每个变量必须先声明,然后才能使用,声明变量时必须指定该变量的数据类型.首先看下面这条语句的执行过程: int a = 5; 实际上面这条语句会被拆分成两个过程执行: (1)i

java变量,初始化快,构造函数的执行顺序

转自 http://blog.csdn.net/macheng365/article/details/6403050 —————————————————————————————————————————————————— 对于JAVA中类的初始化是一个很基础的问题,其中的一些问题也是易被学习者所忽略.当在编写代码的时候碰到时,常被这些问题引发的错误,感觉莫名其妙.而且现在许多大公司的面试题,对于这方面的考查也是屡试不爽.不管基于什么原因,我认为,对于java类中的初始化问题,有必要深入的了解.Ja

JAVA变量初始化赋值null

 在Java中,null值表示引用不指向任何对象.运行过程中系统发现使用了这样一个引用时·可以立即停止进一步的访问,不会给系统带来任何危险. 1.如果是对象的field的话那么系统在初始化对象的时候会把那些对象的值赋值为null,基本数据类型也有它们的初始值 2.如果是在方法内,那么程序员需要自己给这些变量赋值. class T{   Object obj = null;   Object obj1;//系统在初始化的时候会自动的给他赋值为null } class T{   public voi

Java类的初始化顺序 (静态变量、静态初始化块、变量、初始化块、构造器)(转)

大家在去参加面试的时候,经常会遇到这样的考题:给你两个类的代码,它们之间是继承的关系,每个类里只有构造器方法和一些变量,构造器里可能还有一段代码对变量值进行了某种运算,另外还有一些将变量值输出到控制台的代码,然后让我们判断输出的结果.这实际上是在考查我们对于继承情况下类的初始化顺序的了解. 我们大家都知道,对于静态变量.静态初始化块.变量.初始化块.构造器,它们的初始化顺序以此是(静态变量.静态初始化块)>(变量.初始化块)>构造器.我们也可以通过下面的测试代码来验证这一点: Java代码 p

stactic final和final变量的初始化(in java)

1.static final(常量) 初始化可以有两种方法: (1)在声明的时候初始化 static final i = 1; 你也可以将一个静态方法的返回值设置给它 static final int i = f(); static public int f(){ return 1; } (2)在静态代码快中初始化(一般情况下,如果有些代码必须在项目启动的时候就执行的话,需要使用静态代码块,这种代码是主动执行的;一个类可以使用不包含在任何方法体中的静态代码块,当类被载入时,静态代码块被执行,且只