zoukankan      html  css  js  c++  java
  • 类与对象动手动脑

    1.总结这个方法的与众不同

    public Mytextclass(int initvalue)

        {

            value=initvalue;

        }

    (1)   方法名与类名相同

    (2)       方法名的第一个字母大写了

    2.为什么以下代码会出现错误,分析原因

    public class Text {

    public static void main(String[] args)

    {

         Foo obj1=new Foo();

    }

    }

    class Foo

    {

    int value;

    public Foo(int initvalue)

    {

         value=initvalue;

    }

    }

    此代码出现错误的原因:如果类中提供了一个自定义的构造方法,将导致系统不再提供默认构造函数的方法。在类class中创建了一个含一个参数的构造函数,而在主函数中却调用了无参的构造函数。

    3.

    public class Text {
        public static void main(String[] args) 
        {
            InitializeBlockClass obj=new InitializeBlockClass();
            System.out.println(obj.filed);
            obj=new InitializeBlockClass(300);
            System.out.println(obj.filed);
        }
    }
    class InitializeBlockClass
    {
        {
            filed=200;
        }
        public int filed=100;
        public InitializeBlockClass(int value)
        {
            this.filed=value;
        }
        public InitializeBlockClass()
        {
            
        }
    }

    实验截图

    java进行初始化的地方有两个,初始化块和构造函数。其中初始化块分为静态初始化块和实例初始化块,静态初始化块是类中由static修饰的初始化块,实例初始化块为类中没有任何关键字修饰的初始化语句。如果在主函数中创建对象时没有形参时,如果在类中定义了公共的变量并给与了赋值,那么就会把值赋给主函数中的变量,再调用类中的默认构造函数,如果在主函数中创建对象时有形参,则调用类中对应的构造函数。

    4.

    public class TestStaticInitializeBlock {
        public static void main(String[] args)
        {
            new Leaf();
    
        }
    }
    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的构造器");
        }
    
    
    }

    实验截图

    总结“静态初始化块的执行顺序”:静态的初始化块都优先执行,其次才是非静态的初始化块和构造函数,它们的执行顺序是(1)父类的静态初始化块(2)子类的静态初始化块(3)父类的初始化块(4)父类的构造函数(5)子类的初始化块(6)子类的构造函数

    5.在静态方法中访问类的实例首先进行类的实例化,在类的静态方法中可以直接访问类的静态变量

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

    实验截图

    6.两个整数明明一样,为什么一个输出true,一个输出false?

    public class text {
        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);
        }
    }

    输出结果表明i1和j1指的是同一个对象,而i2和j2指的是不同的对象。在通过valueOf方法创建Integer对象的时候,如果数值在[-128,127]之间,便返回指向IntegerCache.cache中已经存在的对象的引用;否则创建一个新的Integer对象。

  • 相关阅读:
    Test_StringBuilder
    什么是朋友
    Uncharted4-Resource-Extract
    在使用 .NET Remoting 技术开发跨进程通信时Remoting找不到请求的服务--解决方法
    SourceTree 拉取github资源包时报错:fatal: unable to access 'https://github.com/xxx.git/': OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443 --解决办法
    .net core3.1 文件导出报错The type initializer for 'Gdip' threw an exception 的解决方法
    .net core3.1文件下载之MimeTypeMapHelper
    .net core3.1 webapi项目部署在centos7中,通过supervisor来做进程守护遇到backoff Exited too quickly (process log may have details)的错误--并提供解决方法
    jenkins安装在ubuntu的解决方法-运维系列
    supervisord.conf配置文件详情
  • 原文地址:https://www.cnblogs.com/lijing925/p/7693729.html
Copyright © 2011-2022 走看看