zoukankan      html  css  js  c++  java
  • Java memo-1

    1.java中int和Integer的区别
    int是基础类型,Integer是Object类型,Integer是int的包装类,继承于Object类

    List<Integer> list = new ArrayList<Integer>();
    list.add(1);   //把一个整数加入到集合中
    int i = list.get(0);    //从集合中取出元素
    

    其中list.add(1)其实有一个自动装箱(AutoBoxing)的过程,输入是int,接受是Integer,就会调用静态的valueOf方法,即list.add(Integer.valueOf(1));
    list.get(0)有一个拆箱(UnBoxing)过程,调用的是intValue方法,即int i = list.get(0).intValue();,取出Integer被包装的int值。
    参考链接:Java暗箱操作之自动装箱与拆箱

    2.向上转型和向下转型
    把一个子类类型安全地变为父类类型的赋值,被称为向上转型(upcasting),向上转型实际上是把一个子类型安全地变为更加抽象的父类型,OK
    把一个父类类型强制转型为子类类型,就是向下转型(downcasting),很有可能失败,如下例子

    Person p1 = new Student(); // upcasting, ok
    Person p2 = new Person();
    Student s1 = (Student) p1; // ok
    Student s2 = (Student) p2; // runtime error! ClassCastException!
    

    参考链接:java继承

    3.String源码观察
    String 类在 JDK 7 源码中的定义:

    public final class String implements java.io.Serializable, Comparable<String>, CharSequence{
    ...
    }
    

    String 是 final 类型的,不能被其他类继承,同时实现了三个接口:java.io.Serializable Comparable<String> CharSequence

    String 字符串是常量,其值在实例创建后就不能被修改.

    /**
    The value isused for character storage.
    */
    private final char value[];
    

    内部是一个字符数组,并且是 final 类型,用于存储字符串内容。

    具体参考:Java 源码分析 — String 的设计

  • 相关阅读:
    android 获取字体宽高
    android 渐变
    android 拖动按钮
    android 模拟器使用
    android 启动其它apk
    How to solve Error: This attribute must be localized. 两种方式
    Chirp用音频 传输文件
    android 打开指定网页
    防止apk被反编译
    iphone 滑块制作
  • 原文地址:https://www.cnblogs.com/liuxin0430/p/11764919.html
Copyright © 2011-2022 走看看