2020.10.10

一、今日学习内容

   1.

public class BoxAndUnbox {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        int value=100;
 
        Integer obj=value;  //装箱
 
        int result=obj*2;     //拆箱
 
    }
 
}

           装箱,就是把基本类型用他们相对应的引用类型包装起来,使他们可以具有对象的特质。

          拆箱,就是跟装箱的方向相反,将Integer及Double这样的引用类型的对象重新简化为值类型的数据。

          在装箱的时候自动调用的是Integer的valueOf(int)方法。而在拆箱的时候自动调用的是Integer的intValue方法。

    2.

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

    

 

    在通过valueOf方法创建Integer对象的时候,如果数值在[-128,127]之间,便返回指向IntegerCache.cache中已经存在的对象的引用;否则创建一个新的Integer对象。上面的代码中i1和ij1的数值为100,因此会直接从cache中取已经存在的对象,所以i1和j1指向的是同一个对象,而i2和j2则是分别指向不同的对象。

   3.

public class ClassAndObjectTest {
    public static void main(String[] args)
    {
        //创建类的实例,定义一个对象变量引用这一实例
        MyClass obj = new MyClass();
        //通过对象变量调用类的公有方法
        obj.myMethod("Hello");
        //给属性赋值
        obj.setValue(100);
        //输出属性的当前值
        System.out.println(obj.getValue());
        //直接访问对象公有字段
        obj.Information = "Information";
        //输出对象公有字段的当前值
        System.out.println(obj.Information);
    }
 
}
 
 
class MyClass
{
    // 公有字段
    public String Information = "";
 
    // 自定义公有Java实例方法
    public void myMethod(String argu)
    {
        System.out.println(argu);
    }
 
    // 定义属性:私有字段+get方法+set方法
    private int value;
    public int getValue()
    {
        return value;
    }
    public void setValue(int value)
    {
        this.value = value;
    }
 
}

       

   在定义了一个类之后如果要使用这个类,首先你需要在主类中定义,new一个对象赋值给对象变量

    4.

   早期我们经常这样定义变量

         int value=100;
 
   前面的示例中这样定义变量
 
   MyClass obj = new MyClass();
    这两种定义不一样第一种是int数据类型 的变量,后一种是对象变量
 
   5.对于原始数据类型的变量(比如int),可以直接使用“==”判断两变量值是否相等,对象变量也可以使用“==”判断两变量值是否相等吗?
        不可以,数据变量可以使用==来判断是否相等,对于对象则是判断是否地址相等;
public class Test{
 
    public static void main(String args[]){
 
        Foo obj1=new Foo();
 
        Foo obj2=new Foo();
 
        System.out.println(obj1==obj2);
 
     }
 
}
 
class Foo{
 
    int value=100;
 
}

   

 

   6.

public class ObjectEquals
{
 
     
     
    public static void main(String[] args)
    {
         
        MyTestClass obj1=new MyTestClass(100);
         
        MyTestClass obj2=new MyTestClass(100);
                        System.out.println(obj1==obj2);
         
        System.out.println(obj1.equals(obj2));
     
    }
 
 
}
 
class MyTestClass
 
{
     
    public int Value;
     
    //注意:只有参数类型为Object的,才是重写了Object的equals方法
     
    //参数类型为MyTestClass的,仅仅是Overload了equals方法。
  
    //   @Override
 
    //   public boolean equals(Object obj)
     
//    {
     
//        return ((MyTestClass)obj).Value==this.Value;
     
//    }
     
    
        public boolean equals(MyTestClass obj)
    
        {
        
            return obj.Value==this.Value;
    
        }
     
        public MyTestClass(int initValue)
     
        {
         
            Value=initValue;
     
        }
 
}

   

 

二、遇到的问题

    没有遇到什么问题,对于验证过程中的一些只是不太理解,通过网上搜索查询到了一些

三、明日计划

   继续学习Java

 

 

 

posted @ 2020-10-10 21:52  小仙女W  阅读(66)  评论(0编辑  收藏  举报