• java初学3


    1、包装类

    Java提倡的万物皆对象,但是数据类型的划分出现了基本数据类型和引用数据类型,那么我们怎么能把基本数据类型称为对象呢?

    Java为每个原始类型提供了封装类,Integer是java为int提供的封装类。
    int的默认值为0,而Integer的默认值为null,
    即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况,

    Integer类型的值会在堆空间开辟存储区域,
    int 类型的值会存放于栈空间,存储和读取速度快于Integer值;
    但是Integer类提供了多个和整数操作相关的方法,
    如进制转换,大小比较,类型转换等,这是int 无法比拟的;

    (1)除了Integer和Character定义的名称和对应的基本类型差异大,其他六种都是将首字母大写就可以了。
    (2)Integer,Byte,Float,Double,Short,Long都是Number类的子类。(Number类后面讲);
    (3)Character和Boolean都是Object直接子类;
    (4)8个类都是final修饰的(不可被继承)。
    把基本数据类型 → 包装类:
         •通过对应包装类的构造方法实现
         •除了Character外,其他包装类都可以传入一个字符串参数构建包装类对象。
    包装类 → 基本数据类型
         •包装类的实例方法xxxValue();    // xxx表示包装类对应的基本数据类型
    boolean bool = false;
    Boolean b2 = new Boolean(bool);
    Integer i = new Integer(3);
    int i2 = i.intValue();
    Boolean b1 = new Boolean("TRue");//true
    boolean b2 = b1.booleanValue();
    Float f = new Float("3.14");//3.14
    Integer i2 = new Integer("123s");//NumberFormatException

    2、自动装箱&自动拆箱

    jdk1.5开始出现的特性:
        •自动装箱:可把一个基本类型变量直接赋给对应的包装类对象或则Object对象
        •自动拆箱:允许把 包装类对象直接赋给对应的基本数据类型 
    int i1 = 12;
    int i2 = 12;
    System.out.println(i1 == i2)//true
    
    Integer in1 = new Integer(12);
    Integer in2 = new Integer(12); 
    System.out.println(in1 == in2)//false
    
    in1 = 12;
    in2 = 12;
    System.out.println(in1 == in2)//true
    
    in1 = -250;
    in2 = -250;
    System.out.println(in1 == in2)//false
    
    //这里涉及到了一个享元模式
    //就是说在你操作整数的时候,有一个区间的数【-128~127】,你会经常使//用,它会缓存起来,所以-250为false,12为true
    //byte,short,integer,long都是一样的
    Integer i = 3;//装箱
    int i2 = i;//拆箱
    Object flag = new Boolean(false);
    if(flag instanceof Boolean){
    Boolean b = (Boolean)flag;
    boolean b2 = b;
    }

    3、基本类型和String之间的转换

    ØString → 基本类型,除了Character外所有的包装类提供parseXxx(String s)静态方法,用于把一个特定的字符串转换成基本类型变量;
    Ø基本类型 → String,String 类有静态方法valueOf(),用于将基本类型的变量转换成String类型。
    String str = "17";
    int i = Integer.parseInt(str);//String  --> 基本类型
    String s1 = String.valueOf(i);//基本类型 --> String
     
     


    4、代码块
    (1)代码块指的是使用"{}"括起来的一段代码,根据代码块存在的位置可以分为4种: 
           •普通代码块;
           •构造代码块;
           •静态代码块;
           •同步代码块(线程同步的时候讲解)。
    (2)代码块里变量的作用域:
           •只在自己所在区域(前后的{})内有效;
    A、普通代码块
         普通代码块就是直接定义在方法或语句中定义的代码块:
    .....main.....{
        {
             int x = 1;
             System.out.println("普通代码块" + x);
        }
        int x = 99;
        System.out.println("代码块之外" + x);
    }
    //普通代码块1 //代码块之外99

    B、构造代码块

         直接写在类中的代码块(优先于构造方法执行,每次实例化对象之前都会执行构造代码块)
    public class Demo {
        {
         System.out.println("我是构造代码块");
        }
        public Demo(){
        System.out.println("我是构造方法");
        }
        public static void main(String[] args) {
    System.out.println("main"); Demo d1
    = new Demo(); Demo d2 = new Demo(); } } //main
    //我是构造代码块 //我是构造方法
    //我是构造代码块
    //我是构造方法

    C、静态代码块 

         使用static 修饰的构造代码块(优先于主方法执行,优先于构造代码块执行,不管有创建多少对象,静态代码块只执行一次,可用于给静态变量赋值)
    public class Demo {
        {
        System.out.println("我是构造代码块");
        }
        public Demo(){
        System.out.println("我是构造方法");
        }
        static {
        System.out.println("我是静态代码块");
        }
        public static void main(String[] args) {
        System.out.println("Main");
        new Demo();
        new Demo();
       }
    }
    //我是静态代码块
    //main
    //我是构造代码块 //我是构造方法
    //我是构造代码块
    //我是构造方法

    D、同步代码块

    5、包装类Integer把十进制转换成二进制、八进制、十六进制
    如果用到了对int,bool的相关操作,都可以使用自己的包装类来进行,这也是包装类的好处
    但包装类毕竟是对象,所以会被分配到堆上,视情况来使用!
    注意点

    6、final关键字

    ①final可以修饰类,方法,变量。
    ②final修饰类不可以被继承,但是可以继承其他类。 (太监类)
    ③final修饰的方法不可以被覆盖,但可以覆盖父类方法。(太监方法)
    ④final修饰的变量称为常量,这些变量只能赋值一次。(太监变量)
    ⑤内部类在局部时,只可以访问被final修饰的局部变量。
    ⑥final修饰的引用类型变量,表示该变量的引用不能变,而不是该变量的值不能变;
       通常规范中:常量名称所有字母大写,若有多个单词组成,单词间使用下划线连接。
       public static final修饰的常量称为全局常量;
    7、
  • 相关阅读:
    linux中内存使用,swap,cache,buffer的含义总结
    haproxy启动时提示失败
    pcs与crmsh命令比较
    用yum下载rpm包(不安装)到指定目录
    Openstack的镜像属性
    ceph 对接openstack liberty
    ceph 创建和删除osd
    linux之fstab文件详解
    OpenStack Swift集群部署流程与简单使用
    swift(Object Storage对象存储服务)(单节点)
  • 原文地址:https://www.cnblogs.com/MrZivChu/p/startstudyjava3.html
Copyright © 2020-2023  润新知