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

这篇文章主要介绍了Java变量的初始化及静态方法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

1.变量初始化

package treat;
class InitializeBlockClass
{
  public int field=100;
  {
    field=200;
  }
  public InitializeBlockClass(int value)
  {
    this.field=value;
  }
  public InitializeBlockClass()
  {

  }
}

public class treat {
  public static void main(String args[])
  {
    InitializeBlockClass obj=new InitializeBlockClass();
    System.out.println(obj.field);
    obj=new InitializeBlockClass(300);
    System.out.println(obj.field);
  }
}

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

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

package treat;

public class treat {

  public int dg=0;
  void fun()
  {
    System.out.println("hello world!!");
  }
  static void play(treat a)//通过形参传递对象实现非静态方法的调用
  {
    a.fun();
    a.dg=8;//调用对象改变非静态字段的值
    System.out.println(a.dg);
  }
  public static void main(String args[])
  {
    treat a=new treat();
    treat.play(a);
  }
}

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • JAVA中堆、栈,静态方法和非静态方法的速度问题

    一.堆和栈的速度性能分析 堆和栈是JVM内存模型中的2个重要组成部分,自己很早以前也总结过堆和栈的区别,基本都是从存储内容,存储空间大小,存储速度这几个方面来理解的,但是关于堆和栈的存储速度,只知道堆存储速度慢,栈存储速度快,至于为什么堆比栈的存取速度慢,并没有特别深入的研究,从网上也找了很多资料,但很多理由并不太认同,这里也列举一些,并结合自己的理解来分析,如果不正确欢迎指正. 1.从分配的角度分析 java中栈的大小和生命周期在编译期间就确定了的(可以参考之前写的一篇JVM内存模型中的分析,

  • Java中static静态变量的初始化完全解析

    静态变量初始化顺序 1.简单规则 首先先看一段最普遍的JAVA代码: public class Test { public static Test1 t = new Test1(); public static int a = 0; public static int b; public static void main(String[] arg) { System.out.println(Test.a); System.out.println(Test.b); } } class Test1

  • 关于Java变量的声明、内存分配及初始化详解

    实例如下: class Person { String name; int age; void talk() { System.out.println("我是: "+name+", 今年: "+age+"岁"); } } public class TestJava2_1 { public static void main(String args[]) { Person p; if (p == null) { p = new Person(); }

  • java中staticclass静态类详解

    一般情况下是不可以用static修饰类的.如果一定要用static修饰类的话,通常static修饰的是匿名内部类. 在一个类中创建另外一个类,叫做成员内部类.这个成员内部类可以静态的(利用static关键字修饰),也可以是非静态的.由于静态的内部类在定义.使用的时候会有种种的限制.所以在实际工作中用到的并不多. 在开发过程中,内部类中使用的最多的还是非静态地成员内部类.不过在特定的情况下,静态内部类也能够发挥其独特的作用. 一.静态内部类的使用目的. 在定义内部类的时候,可以在其前面加上一个权限

  • Java中的静态内部类详解及代码示例

    1. 什么是静态内部类 在Java中有静态代码块.静态变量.静态方法,当然也有静态类,但Java中的静态类只能是Java的内部类,也称为静态嵌套类.静态内部类的定义如下: public class OuterClass { static class StaticInnerClass { ... } } 在介绍静态内部类之前,首先要弄清楚静态内部类与Java其它内部类的区别. 2. 内部类 什么是内部类?将一个类的定义放在另一个类的内部,就是内部类.Java的内部类主要分为成员内部类.局部内部类.

  • Java类变量和成员变量初始化过程的应用介绍

    一.类的初始化 对于类的初始化:类的初始化一般只初始化一次,类的初始化主要是初始化静态成员变量. 类的编译决定了类的初始化过程. 编译器生成的class文件主要对定义在源文件中的类进行了如下的更改: 1)       先按照静态成员变量的定义顺序在类内部声明成员变量. 2)       再按照原java类中对成员变量的初始化顺序进行初始化. 一个java类和编译后的class对应的转换如下: 源文件: 复制代码 代码如下: public class Person{ public static S

  • 基于java变量和作用域以及成员变量的默认初始化(详解)

    ava中的变量有成员变量和局部变量,定义在类中方法之外的变量成为成员变量或者成员字段(域),表示一个类所具有的属性,定义为类的成员变量的变量的作用于是整个类,该变量在定义的时候不需要初始化,在使用前java会自动初始化成员变量,对于基本数据类型的的自动初始化如下: java基本类型默认初始化值 int 0 short 0 byte 0 long 0 float 0.0 double 0.0 boolean false char 0 例如: public class test{ private i

  • 浅谈Java变量的初始化顺序详解

    规则1(无继承情况下):对于静态变量.静态初始化块.变量.初始化块.构造器,它们的初始化顺序依次是(静态变量.静态初始化块)>(变量.初始化块)>构造器证明代码: 复制代码 代码如下: public class InitialOrderTest {    // 静态变量    public static String staticField = "静态变量";    // 变量    public String field = "变量";    // 静

  • Java变量的初始化及静态方法的实现

    这篇文章主要介绍了Java变量的初始化及静态方法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.变量初始化 package treat; class InitializeBlockClass { public int field=100; { field=200; } public InitializeBlockClass(int value) { this.field=value; } public InitializeBlockC

  • 聊聊java变量的初始化之后的默认值

    变量初始化后的默认值 对于类的成员变量 不管程序有没有显示的初始化,Java 虚拟机都会先自动给它初始化为默认值. 1.整数类型(byte.short.int.long)的基本类型变量的默认值为0. 2.单精度浮点型(float)的基本类型变量的默认值为0.0f. 3.双精度浮点型(double)的基本类型变量的默认值为0.0d. 4.字符型(char)的基本类型变量的默认为 "/u0000". 5.布尔性的基本类型变量的默认值为 false. 6.引用类型的变量是默认值为 null.

  • Java 变量类型及其实例

    在Java语言中,所有的变量在使用前必须声明.声明变量的基本格式如下: type identifier [ = value][, identifier [= value] ...] ; 格式说明:type为Java数据类型.identifier是变量名.可以使用逗号隔开来声明多个同类型变量. 以下列出了一些变量的声明实例.注意有些包含了初始化过程. int a, b, c; // 声明三个int型整数:a. b.c. int d = 3, e, f = 5; // d声明三个整数并赋予初值. b

  • 详解Kotlin中如何实现类似Java或C#中的静态方法

    大家可以在网络上搜到不少这样的文章,官方推荐是包级函数,也有人说用伴生对象(companion class).这些都是不错的选择,但并不完善,我们在不同的情况下有更好的选择.我总结了几种方法,分别是:包级函数.伴生对象.扩展函数和对象声明.这需要大家根据不同的情况进行选择. 一.包级函数 Kotlin和Java及C#不同的是,可以在包里面直接声明函数.做法和类中是一样的,这里就不多说了,的确是一个非常好的选择.适用于函数不需要不包内部的类进行数据共享的方法. 二.伴生对象 从语义上来讲,伴生函数

  • 简单了解java类的初始化以及类的实例化

    前言 上一篇我们知道了一个类的生命周期是:加载->验证->准备->解析->初始化->使用->卸载. 当初始化完成以后,一个类所有的类变量(被static修饰的变量)都被赋值.但是未被static修饰的成员变量又是何时被赋值的呢? 一个类何时会被初始化 一个类何时被初始化可以分为以下几类: 1.创建类的实例(new). 2.访问某个类或接口的静态变量,或者对该静态变量赋值. 3.调用类的静态方法. 4.通过反射方式执行以上三种行为. 5.初始化子类的时候,会触发父类的初始

  • 深入理解final变量的初始化

    final变量的初始化位置 一是其定义处,也就是说在final变量定义时直接给其赋值,二是在构造函数中.而且在Java1.1以前,只能是在定义时给值.三是在初如化代码块中{} 或者 static{} 复制代码 代码如下: public class InitOrder {    {        System.out.println("before---field");        //System.out.println("d1="+d1);        d1

随机推荐