• 作业


    public class Num {

    public static void main(String[] args) {
    // TODO Auto-generated method stub
    N n1=new N();   //申请对象n1;
    N n2=new N(); //申请对象n2;
    }

    }
    class N{
    static int num=0;    //用来保存申请个数
    public N()
    {
    num=num+1;
    System.out.println("已经创建对象个数为:"+num);
    }
    }

    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);
    }

    }

    class InitializeBlockClass{
    //下面这句在初始化块之前与之后,会影响到field字段的初始值
    public int field=100;

    {
    field=200;
    }
    //public int field=100;
    public InitializeBlockClass(int value){
    this.field=value;
    }
    public InitializeBlockClass(){

    }
    }

    java 字段初始化声明一个变量后,最终输出的的结果是最近一次赋值的结果。

    2.

    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();

    }
    }

    初始化中首先执行静态初始化,假如存在继承关系则先初始化父类静态函数,在执行子类静态函数,初始换完毕后。执行父类的普通函数和无参构造函数,在执行子类的普通函数和无参构造函数,假如存在有参构造函数,在无参函数执行结束后执行。

    3.

    public class Ceshi {

    public static void main(String[] args) {
    // TODO Auto-generated method stub
    Jingtai n=new Jingtai();
    n.fangf();

    }

    }
    class Jingtai{
    public int num=1;
    int getNum(){ //用来返回num的值
    return num;
    }
    static void fangf(){
    Jingtai n=new Jingtai();
    System.out.println("静态方法调用成员函数:"+n.getNum());

    }
    }

    可以通过一个方法得到成员函数的值,然后在静态方法中调用即可。

    4.

    public class StrangeIntegerBehavior 
    {


    public static void main(String[] args)
    {


    Integer i1=100;

    Integer j1=100;

    System.out.println(i1==j1);


    Integer i2=129;

    Integer j2=129;

    System.out.println(i2==j2);

    }

    }

    经过javap 对class文件执行并在jdk源文件中发现

    public static Integer valueOf(int i) {

    if (i >= IntegerCache.low && i <= IntegerCache.high)

    return IntegerCache.cache[i + (-IntegerCache.low)];

    return new Integer(i);

    }

    Integer把-128到127的整数都提前实例化了。 导致输出结果一个是true一个是false。

  • 相关阅读:
    Vue学习笔记vueelementadmin 前端学习
    Vue学习笔记Vue.js2.X 学习(三)===>组件化高级
    Vue学习笔记rest_framework_jwt 学习
    Vue学习笔记Django REST framework3后端接口API学习
    Vue学习笔记Vue.js2.X 学习(一)===>基本知识学习
    Vue学习笔记Vue.js2.X 学习(二)===>组件化开发
    Vue学习笔记Windows系统Git安装(按装vueelementadmin报错)
    跑马灯
    使用信号量的线程同步实验
    按键盘数码管显示实验
  • 原文地址:https://www.cnblogs.com/wmy-666/p/7697759.html
Copyright © 2020-2023  润新知