java字段中初始化的规律:

执行以下代码,出现的结果是什么?

class InitializeBlockClass{

{

field=200;

}

public int field=100;

public InitializeBlockClass(int value){

this.field=value;

}

public InitializeBlockClass(){

}

}

public class InitializeBlockDemo {

/**

* @param args

*/

public static void main(String[] args) {

InitializeBlockClass obj=new InitializeBlockClass();

System.out.println(obj.field);

obj=new InitializeBlockClass(300);

System.out.println(obj.field);

}

}

输出的结果为100,300;

原因:Java中进行初始化的地方有两个:一个是构造函数,一个是初始化块,

在一个,当类中有初始化块是,如果调用无参数的构造函数,他会按照程序的顺序逐一调用函数,后边的函数可以把前边的都替换掉。若调用的是有参数的构造函数,则输出的是自己赋给的初值。

静态方法中只允许访问静态数据,那么,如何在静态方法中访问类的实例成员(即没有附加static关键字的字段或方法)?

执行以下代码:

package tur3;

public class Jingtai {

public  int num;

static void change(Jingtai a)

{

a.num=10;

}

public static void main(String[] args)

{

Jingtai b=new Jingtai();

b.num=100;

b.change(b);

System.out.println(b.num);

}

}

输出的结果为:

该程序的输出结果为  10

原因:通常情况下,静态方法是不能访问类的非静态成员函数以及非静态的变量,因为类里边的静态成员属于类,不用声明类的对象时,静态成员就已经存在了,而非静态成员必须在声明类的对象后才可以分配内存空间,所以类的对象不可以访问类中静态成员。但是,如果先要在静态成原函数中调用非静态中的变量或方法,可以在静态成员函数中声明一个类的对象,然后再调用类的非静态成员或方法。

java字段中初始化的规律与如何用静态成员函数调用非静态成员的更多相关文章

  1. JAVA字段的初始化规律

    JAVA字段的初始化规律 1.类的构造方法 (1)“构造方法”,也称为“构造函数”,当创建一个对象时,它的构造方法会被自动调用.构造方法与类名相同,没有返回值. (2)如果类没有定义构造函数,Java ...

  2. c++ 类静态成员、非静态成员初始化

    1.静态成员初始化(不能在构造函数或初始化列表中初始化) 1.1 所有静态成员都可以在类定义之外初始化(通用),如下所示 class test { public: static int a; }; ; ...

  3. C#中的静态成员和非静态成员

    C#的类中可以包含两种方法:C#静态方法与非静态方法.那么他们的定义有什么不同呢?他们在使用上会有什么不同呢? 让我们来看看最直观的差别:使用了static 修饰符的方法为静态方法,反之则是非静态方法 ...

  4. Java 类中各成分加载顺序 和 内存中的存放位置

    参加一个笔试,有一个关于类的静态代码块.构造代码块.构造函数的执行顺序的问题.不太清楚,网上百度了一下.在这里记录一下. 一.什么时候会加载类?使用到类中的内容时加载:有三种情况1.创建对象:new ...

  5. C++类中的静态成员变量和静态成员函数的作用

    数据成员可以分为静态变量.非静态变量两种. 静态成员:静态类中的成员加入static 修饰符,即是静态成员,可以使用类名+静态成员名访问此静态成员,因为静态成员存在于内存,非静态成员需要实例化才会分配 ...

  6. Java字段初始化规律:

    Java字段初始化规律: Java进行初始化的地方有两个,初始化块和构造函数,其中初始化块又分为静态初始化块和实例初始化块(以上程序为实例初始化块).静态初始化块是类中由static修饰的初始化块,实 ...

  7. Java字段初始化规律

    首先先附上一段代码:public class InitializeBlockDemo { public static void main(String[] args) { InitializeBloc ...

  8. java中的多构造函数以及类字段的初始化顺序

    1.同一个类可以有多个构造函数,多个构造函数之间通过参数来区分.这是方法重载的一个实例.构造函数之间可以相互调用. 2.类的初始化块:可以在类中使用“{”和“}”将语句包围起来,直接将其作为类的成员. ...

  9. Java实现打包下载BLOB字段中的文件

    概述 web项目的文件打包下载实现:servlet接收请求,spring工具类访问数据库及简化大字段内容获取,org.apache.tools.zip打包. 必要提醒:当前总结是继Java实现下载BL ...

随机推荐

  1. 监控磁盘IO

    一.添加userparameter_io.conf配置文件 在/etc/zabbix/zabbix_agentd.d下添加userparameter_io.conf, 文件内容如下: UserPara ...

  2. opencv在64位4418上的移植

    1.mkdir build 2.cmake-gui 操作系统写Linux 去掉 去掉WITH_CUDA 去掉WITH_GTK 去掉WITH_1394 去掉WITH_GSTREAMER 去掉WITH_L ...

  3. 一张图记住TCP/IP通讯中的IP地址配置

    TCP/IP通讯情景: 用网线将计算机A(服务器Server)和计算机B(Client)连接起来.程序代码在计算机A中,计算机B中安装有TCP/IP通讯助手. (图中屏幕大的是计算机A,屏幕小的笔记本 ...

  4. java 线程的几个注解

    Java并发编程中,用到了一些专门为并发编程准备的 Annotation. 主要包括三类: 类 Annotation(注解) 就像名字一样,这些注解是针对类的.主有要以下三个: @ThreadSafe ...

  5. 浅谈c/c++中的指针问题

    首先给出几种指针类型来作出区分,不看后面的解析如果可以自己分辨正确那么就算对指针有一个很好的掌握了,就没有必要再去看后面的解析,如果不能完全区分,那么就有必要仔细看看后面解析. 1 Char * p  ...

  6. 粗略了解fill与fill_n

    以前只知道数组赋值时用memset(): 而这几天却了解到了一个函数:fill(); 感觉以后会有用吧... std::fill template <class ForwardIterator, ...

  7. HaXe以及OpenFL部署

    HaXe以及OpenFL部署 Haxe是一种跨平台的编程语言,本文并未HAXE的教程,只是针对OPENFL以及HAXE的部署教程.HAXE的语法非常类似AS3,由于国内部署HAXE艰难,经常下载到一半 ...

  8. Jsp 的映射

    Jsp 的映射 Jsp 的映射 Jsp最佳实践 不管是jsp还是Servlet,虽然都可以开发动态Web资源,但是这两门 技术的各自特点,在长期的软件实践中,人们逐渐的把servlet作为 web应用 ...

  9. 重定向和请求转发后面加“return;”语句

    请求转发  RequestDispatcher 重定向     Redirect 代码的执行: 无论是 request.getRequestDispatcher(path).forward(reque ...

  10. struts2标签使用详解

    Struts2常用标签总结一 介绍1.Struts2的作用 Struts2标签库提供了主题.模板支持,极大地简化了视图页面的编写,而且,struts2的主题.模板都提供了很好的扩展性.实现了更好的代码 ...