一:“==”的不同含义

当“==”施加于原始数据类型变量时,是比较变量所保存的数据是否相等
当“==”施加于引用类型变量时,是比较这两个变量是否引用同一对象。

测试代码如下:

package test;

public class qq {

	public static void main(String[] args) {
// TODO Auto-generated method stub
Foo obj1=new Foo();
Foo obj2=new Foo();
System.out.println(obj1==obj2); } }
class Foo{
int value=100;
}

结果是false。

分析:例子中含义是判断这两个变量是否引用同一对象,因为例子中定义的是两个不同的对象,所以返回false。

二:类的构造方法

如果类提供了一个自定义的构造方法,将导致系统不再提供默认构造方法。
源代码:

package test;

public class qq {

	public static void main(String[] args) {
// TODO Auto-generated method stub
Foo obj1=new Foo();
} }
class Foo{
int valud;
public Foo(int initValue)
value=initValue;
}

分析:程序报错,原因因为自定义了构造方法,系统不再提供默认构造方法。

三:静态初始化块的执行顺序

源代码:

class Root
{
static{
System.out.println("Root的静态初始化块");
}
{
System.out.println("Root的普通初始化块");
}
public Root()
{
System.out.println("Root的无参数的构造器");
}
}
class Mid extends Root
{
static{
System.out.println("Mid的静态初始化块");
}
{
System.out.println("Mid的普通初始化块");
}
public Mid()
{
System.out.println("Mid的无参数的构造器");
}
public Mid(String msg)
{
//通过this调用同一类中重载的构造器
this();
System.out.println("Mid的带参数构造器,其参数值:" + msg);
}
}
class Leaf extends Mid
{
static{
System.out.println("Leaf的静态初始化块");
}
{
System.out.println("Leaf的普通初始化块");
}
public Leaf()
{
//通过super调用父类中有一个字符串参数的构造器
super("Java初始化顺序演示");
System.out.println("执行Leaf的构造器");
} } public class TestStaticInitializeBlock
{
public static void main(String[] args)
{
new Leaf(); }
}

结果截图:

aaarticlea/png;base64,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" alt="" />

分析:

首先执行父类静态的内容,父类静态的内容执行完毕后,接着去执行子类的静态的内容,当子类的静态内容执行完毕之后,再去看父类有没有非静态代码块,如果有就执行父类的非静态代码块,父类的非静态代码块执行完毕,接着执行父类的构造方法;父类的构造方法执行完毕之后,它接着去看子类有没有非静态代码块,如果有就执行子类的非静态代码块。子类的非静态代码块执行完毕再去执行子类的构造方法。总之一句话,静态代码块内容先执行,接着执行父类非静态代码块和构造方法,然后执行子类非静态代码块和构造方法。

注意:子类的构造方法,不管这个构造方法带不带参数,默认的它都会先去寻找父类的不带参数的构造方法。如果父类没有不带参数的构造方法,那么子类必须用supper关键子来调用父类带参数的构造方法,否则编译不能通过。

四:在静态方法中访问类的实例成员

源代码:

package test;

public class qq
{
int x = 3;//类的实例变量,初始化值为3
static int y = 4;//类的静态变量,初始化值为4
public static void method()//静态方法
{
System.out.println("实例变量x = " + new qq().x);//在静态方法中访问类的实例变量需首先进行类的实例化
System.out.println("静态变量y = " + y);//在静态方法中可直接访问类的静态变量
} public static void main(String[] args)
{
qq.method();
qq ex = new qq();
System.out.println("x = " + ex.x);
}
}

五:Java字段初始化的规律

源代码:

package test;

public class qq {

	public static void main(String[] args) {
// TODO Auto-generated method stub
InitialzeBlockClass obj=new InitialzeBlockClass();
System.out.println(obj.field);
obj=new InitialzeBlockClass(300);
System.out.println(obj.field);
} }
class InitialzeBlockClass{
{
field=200;
}
public int field=100;
public InitialzeBlockClass(int value){
this.field=value;
}
public InitialzeBlockClass(){ }
}

实验结果截图:

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGgAAAA3CAIAAABvppjUAAABN0lEQVR4nO3YzY2DMBQA4VeXC6IeV0MzLmb3kADGP0s0hyQr5rvFXNCIJzuOHyHx6Rf4rwwHGQ4yHNSEKzlFRCxrvxYRKZc/F++kDrcukXIpOdXh1mXveDwZLt5LP6rnEo+Y+4NHr+HizVyE23+sS0TK+fxN1ovvfOlv8FK4fTLrYW4W3/nS3+CFUY3TXD5HtV+8matw9fd0bAnDxXtpdtWTat/0ONLyAAwZDjIcZDjIcJDhIMNBp3DVQe7qyOY5brhactqCeK00Ng/X/bnyWqnWhNuGtfsH77VSY7I5bLPotdLMbFfdanitNDH/4o7NwWulgcm1Uj17HkdGPABDhoMMBxkOMhxkOMhwkOEgw0GGgwwHGQ4yHGQ4yHCQ4SDDQYaDDAcZDjIcZDjIcJDhIMNBhoMMB/0CtBRQe2cauX4AAAAASUVORK5CYII=" alt="" />

分析(Java字段初始化规律):所有类的变量都默认初始化为null,比如String a; Integer b;数字类的原始数据类型默认初始化为0,比如int a; short b; char c;boolean默认初始化为false;

类加载时直接初始化静态字段;

类加载时调用静态方法初始化静态字段;

实例化对象时,在调用构造函数之前代码块中初始化字段;

实例化对象时,在调用构造函数之时初始化字段;

JAVA类与对象(课堂总结)的更多相关文章

  1. Java类和对象初始化

    类的生命周期: Java类的初始化: 本阶段负责为类变量赋正确的初始值.(类变量即静态变量) Java编译器把所有的类变量初始化语句和静态初始化器通通收集到<clinit>方法中,该方法只 ...

  2. java类和对象之间的差

    java类和对象之间的差别是一个普遍的问题,刚开始学习java当它来到与类和对象接触.今天就来总结一下它们之间的差异. 先说说class和object差异.事实上,词:object是全部class的父 ...

  3. 危险代码:如何使用Unsafe操作内存中的Java类和对象

    危险代码:如何使用Unsafe操作内存中的Java类和对象—Part1 危险代码:如何使用Unsafe操作内存中的Java类和对象—Part2 危险代码:如何使用Unsafe操作内存中的Java类和对 ...

  4. [Java初探08]__简单学习Java类和对象

    前言 在前面的学习中,我们对面向对象的编程思想有了一个基本的了解,并且简单的了解了类和对象的定义.那么类和对象在Java语言中是如何表现的,这次,就从实际出发,学习一下一下类和对象在Java语言中的使 ...

  5. java类和对象

    类是对象的抽象 对象是类的一个实例类 对象 = new 类();拿对象可以操作这个类里的方法 java类与对象的区别是个老生常谈的问题,刚开始学java的时候就开始接触类和对象,今天来总结一下他们之间 ...

  6. 解析Java类和对象的初始化过程

    类的初始化和对象初始化是 JVM 管理的类型生命周期中非常重要的两个环节,Google 了一遍网络,有关类装载机制的文章倒是不少,然而类初始化和对象初始化的文章并不多,特别是从字节码和 JVM 层次来 ...

  7. JAVA类和对象课后作业

    1.使用类的静态字段和构造函数,我们可以跟踪某个类所创建对象的个数.请写一个类,在任何时候都可以向它查询"你已经创建了多少个对象?" 代码: //显示类 //YiMingLai 2 ...

  8. Java类与对象的基础学习

    1. 请输入并运行以下代码,得到什么结果? public class Test{ public static void main(String args[]){ Foo obj1=new Foo(); ...

  9. JAVA类与对象作业——动手动脑以及课后实验性问题

    一: 1.源代码 //MAO2015.10.6 //foo class Foo { int value; public Foo(int initValue) { value = initValue; ...

  10. JAVA类与对象(九)------多态

    多态是同一个行为具有多个不同表现形式或形态的能力.多态性是对象多种表现形式的体现. 多态存在的三个必要条件: 继承 重写 父类引用指向子类对象 例:Parent p = new Child(); 当使 ...

随机推荐

  1. strut2读源码记录

    首先你得准备一个很简单的struts2的程序,可以发一次请求后能返回一个正确的响应,当然,struts2的源码也要有,我这里用的myeclipse调试的,本来是想用eclipse,因为本人习惯于用ec ...

  2. Broadcast Reveiver作用

    Broadcast Reveiver作用以及为何要引入(用来接收系统以及自定义消息的) 在系统内通知和判定执行状态 1,系统执行状态,开机了,TF卡插拔,准备关机,电量低了, 2,自定义执行状态,发消 ...

  3. OleDbCommand cmd.Parameters.AddWithValue 添加参数时需要按照存储过程参数的顺序加入

    在使用存储过程时,参数出入的顺序要一致.

  4. as3 Loader程序域

    Loader的 load方法有两个参数 第二个参数是LoaderContext对象 LoaderContext对象里有一个applicationDomain( 程序 域)对象 设置程序域对象可以设置两 ...

  5. ON COMMIT PRESERVE ROWS

    定义声明式全局临时表的每个会话拥有自己的独特的临时表描述.当会话终止时,表行和临时表描述均会被删除. 有如下选项,可控制commit后临时表的状态: ON COMMIT DELETE ROWS:在执行 ...

  6. 使用kettle工具将文本文件的内容插入Linux虚拟机下的mysql表中

    一.      解压kettle包 1.把包拷到Linux系统下 还有mysql的驱动包 2.解压zip后缀的包 输入命令:unzip /software/pdi-ce-7.0.0.0-25.zip ...

  7. Android自定义控件系列(一)—Button七十二变

    转载请注明出处:http://www.cnblogs.com/landptf/p/6290791.html 忙了一段时间,终于有时间整理整理之前所用到的一些知识,分享给大家,希望给同学们有些帮助,同时 ...

  8. 前端 PC端兼容性问题总结

    1.如果图片加a标签在IE9-中会有边框 解决方案: img{border:none;} 2.rgba不支持IE8 解决方案:可以用 opacity  eg: opacity:0.7;/*FF chr ...

  9. iOS -不同模拟器字体适配

    1.先建立一个UILabel的分类 导入#import <objc/runtime.h>头文件 2.在.m文件中写入如下代码 //不同设备的屏幕比例(当然倍数可以自己控制) #define ...

  10. CFRound#379(div2)

    题目链接:http://codeforces.com/contest/734 A:SB题. #include<cstdio> #include<cstring> #includ ...