大数据之Java学习笔记补充(一)

一、JVM内存结构

    1.JVM所管理的内存

    2.主要分三大区域:

       方法区:用来存储程序运行时所需要的类信息

                            比如:Person.class、静态方法等,常量池

       堆:所有引用类型的对象(实例)存储的位置

       栈:是用来存储方法的参数以及方法内的局部变量

              JVM会给每一个方法单独分配空间,用来存储此方法内的所有局部变量,当此方法结束后,栈帧消失,内存释放

    3.垃圾回收机制(GC):不定时检查堆里的对象,是否被变量所引用,如果这个对象没有被引用,就会处理这个对象(System.gc())

二、API(程序应用接口)

    就是封装了已经写好的类型

    包括了常用的类型,如String、Date、Exception、IO等

    (API手册)

三、字符串

    String:特点是一经创建不可改变、不能被继承、

    StringBuffer:效率高,线程不安全

    StringBuilder:比较常用(效率高,线程不安全)

    String类重写了Object的equals方法(判断内容)和toString()方法

    StringBuffer和StringBuilder没有重写equals方法

四、包装类

    Object这个类时引用类型的最顶端(所有引用类型的父类)

              boolean equals(Object obj):

                     return this==obj;

                     比较的是地址信息

          String toString():返回了对象的一串字符:

                     类全名@Hash值

    所以在定义类时,都会重写equals和toString方法

    equals用来比较两个对象的内容

        1.    先判断传进来的参数是不是this(即本身)

        2.    判断参数是不是null

        3.    判断参数是不是同一类型

    toString用来描述对象的内容

    八大基本类型的包装类

       byte --- Byte

       short ---- Short

       int --- Integer

       long --- Long

       float --- Float

       double --- Double

       char ---- Character

       boolean --- Boolean

    包装类中有两个方法

       parseXXX(String str):将字符串类型转化成XXX类型

       valueOf(String str):将字符串类型转化成XXX型的包装类

       基本数据类型变成包装类的方法:

            1.    使用构造器进行装箱(比如Integer a=newInteger(100);)

            2.    自动装箱(当然也可以自动拆箱)(比如 Integer a=5(装箱);int b=a;(拆箱))

         包装类的整数常量池:

               在自动装箱时,如果值在-128到127范围内

                       比如Integer a = 5;

                此时,先去常量池中查找是否有与5值相等的对象,如果有,就不再创建,直接引用常量池中的,如果没有,就会创建,然后存入常量池。

五、异常

        1.按照编译器是否检查分类

                检查性异常

                非检查性异常

       2.按照jvm运行时分类

                运行时异常:也叫非检查性异常

         编译期异常:检查性异常

        3.try-catch-finally语句

            try{

                        可能会出现异常的代码块

                         将try抓到的异常信息封装成异常对象

            }catch(Exception e){

                         将地址信息给e

            }finally{

                         通常进行一些流的关闭操作

            }

        注意:多个catch时,从上往下处理的异常必须是同级别的异常类型或者是子父关系

        子类重写父类的方法时,如果父类的方法有声明(throws)异常,子类的方法可以不声明;也可以声明同一个类型或者是异常的子类型

六、Date及其常用API

        1、 Java中的时间

            在java语言中,也设计出了相应的时间类型,用来描述时间及其日期等信息。用的是UTC时间标准。GMT也是一个时间标准

        2、 Date类型简介

                java.util.Date封装了时间信息。

                获取的时间:是距离纪元(就是1970年1月1日0时0分0秒)的毫秒数来表示另外一个时间点

                Date类型中的很多方法已经被Calendar所取代

        3、 常用API

            构造器:

                   Date():获取的是系统当前时间点

                   Date(long time):将time作为毫秒数设置成距离纪元的时间点

              方法:

                     longgetTime():获取时间对象所距离纪元的毫秒数

                     voidsetTime(long time):设置距离纪元time的时间毫秒数

七、SimpleDateFormat

        1、 类型简介

                java.text.SimpleDateFormat用来进行格式化时间、可以将时间格式化成字符串,也可以将字符串解析成时间对象。

        2、 日期模式匹配字符

            y:年  比如: yyyy---2018

           M:月  比如:   MM-----06

            d:日 比如: dd-----02  

            E:星期  比如:  E-----星期六

            a:上下午  比如: a-----下午

            H:24小时的时 比如:HH----16

            h:12小时的时 比如:hh(a)---43(下午)

            m:分         比如:mm--  35

            s:秒       比如:ss—23

        3、 构造器

                SimpleDateFormat():系统提供默认格式

                SimpleDateFormat(String pattern):自定义格式pattern(字符串类型,利用日期模式匹配字符)

        4、 Date格式化成String

            例子:

SimpleDateFormat simpledateformat=new SimpleDateFormat("yyyy年MM月dd日 E HH时mm分ss秒 ");

        Date now =new Date();

System.out.println("当前时间:"+simpledateformat.format(now));

        5、 String格式化成Date

            例子:      

String str=”1997-10-15”;

SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");

        try {

           Date date=sdf.parse(str);

        } catch (ParseException e) {

           // TODO Auto-generated catch block

           e.printStackTrace();

    }

八、Calendar

        1、类型简介

                java.util.Calendar封装了日期和时间信息

                可以对时间分量进行设置。

                Calendar是抽象类,其子类是各个国家所使用的日历类型

               不过,多数国家通常用的都是(GregorianCalendar格里高利历法,即阳历)

        2、getInstance方法

                    --static Calendar getInstance();

                             作用:静态方法,获取子类对象

        3、日期与时间分量

               --static int YEAR

               --static int MONTH: 值为0-11

               --static int DATE

               --static int WEEK_OF_YEAR

               --static int WEEK_OF_MONTH

               --static int DAY_OF_WEEK:值为1-7,从周日开始

               --static int HOUR

               --static int MINUTE

               --static int SECOND

    4、API

         1)getActualMaximum

               可以获取某个时间分量的最大值。

         2)add(intfield,int amount)

                在某个时间分量上增加amount

        3)getTime()与setTime(Date date)

               getTime():获取Date类型

               setTime(Date date):传入Date类型,设置Calendar

        4)get(intfield)

               获取某个时间分量的值

        5) getTimeInMillis()

               返回毫秒数

        6) set(intfield,int value)

               设置某个时间分量的值

猜你喜欢

转载自blog.csdn.net/qq_36590808/article/details/80584116
今日推荐