Java复习第四天

1、Object类

(1)Object是类层次结构的根类,所有的类都直接或者间接的继承自Object类。

(2)Object类的构造方法有一个,并且是无参构造;子类构造方法默认访问父类的构造是无参构造

(3)要掌握的方法:

     A:toString()

返回对象的字符串表示,默认是由类的全路径+'@'+哈希值的十六进制表示。一般子类都会重写该方法。

B:equals()

           比较两个对象是否相同。默认情况下,比较的是地址值是否相同。而比较地址值是没有意义的,所以,一般子类也会重写该方法。

(4)要了解的方法:

     A:hashCode() 返回对象的哈希值。不是实际地址值,可以理解为地址值。

     B:getClass() 返回对象的字节码文件对象

     C:finalize() 用于垃圾回收,在不确定的时间

     D:clone() 可以实现对象的克隆,包括成员变量的数据复制,但是它和两个引用指向同一个对象是有区别的。

2、Scanner的使用

(1)在JDK5以后出现的用于键盘录入数据的类。

(2)构造方法:

     A: System.in 它其实是标准的输入流,对应于键盘录入

     B:构造方法

          InputStream is = System.in;

          Scanner(InputStream is)

     C:常用的格式

          Scanner sc = new Scanner(System.in);

(3)基本方法格式:

     A:hasNextXxx() 判断是否是某种类型的

     B:nextXxx()   返回某种类型的元素

(4)要掌握的两个方法

     A:public int nextInt()

     B:public String nextLine()

(5)需要注意的小问题

     A:同一个Scanner对象,先获取数值,再获取字符串会出现一个小问题。

     B:解决方案:

          a:重新定义一个Scanner对象

          b:把所有的数据都用字符串获取,然后再进行相应的转换

------------------------------------------------------------------

3、String类的概述和使用

(1)多个字符组成的一串数据。可以和字符数组进行相互转换。

(2)构造方法:

     A:public String()

     B:public String(byte[] bytes)

     C:public String(byte[] bytes,int offset,int length)

     D:public String(char[] value)

     E:public String(char[] value,int offset,int count)

     F:public String(String original)

     G:String s = "hello";不是构造方法,但结果也是一个字符串对象

(3)字符串的特点

     A:字符串一旦被赋值,就不能改变。

          注意:这里指的是字符串的内容不能改变,而不是引用不能改变。

     B:字面值作为字符串对象和通过构造方法创建对象的不同

------------------------------------------------------------------

4、StringBuffer

(1)用字符串做拼接,比较耗时并且也耗内存,而这种拼接操作又是比较常见的,为了解决这个问题,Java就提供了一个字符串缓冲区类。StringBuffer供我们使用。

(2)StringBuffer的构造方法

     A:StringBuffer()

     B:StringBuffer(int size)

     C:StringBuffer(String str)

(3)StringBuffer的常见功能

     A:添加功能B:删除功能

     C:替换功能D:反转功能

     E:截取功能

(4) 注意的问题

     StringBuffer:同步的,数据安全,效率低。

     StringBuilder:不同步的,数据不安全,效率高。

     String作为形式参数,StringBuffer作为形式参数。

5、正则表达式

(1)就是符合一定规则的字符串

(2)常见规则

     A:字符

          x 字符 x。举例:'a'表示字符a

          \ 反斜线字符。

          新行(换行)符 ('u000A')

          回车符 ('u000D')

     B:字符类

          [abc] a、b 或 c(简单类)

          [^abc] 任何字符,除了 a、b 或 c(否定)

          [a-zA-Z] a到 z 或 A到 Z,两头的字母包括在内(范围)

          [0-9] 0到9的字符都包括

     C:预定义字符类

          .任何字符。我的就是.字符本身,怎么表示呢? .

          d 数字:[0-9]

          w 单词字符:[a-zA-Z_0-9]

          在正则表达式里面组成单词的东西必须有这些东西组成

     D:边界匹配器

          ^ 行的开头

          $ 行的结尾

           单词边界            

     E:Greedy 数量词

          X? X,一次或一次也没有

          X* X,零次或多次

          X+ X,一次或多次

          X{n} X,恰好 n 次

          X{n,} X,至少 n 次

          X{n,m} X,至少 n 次,但是不超过 m 次

------------------------------------------------------------------

6、多线程

(1)多线程:一个应用程序有多条执行路径

     进程:正在执行的应用程序

     线程:进程的执行单元,执行路径

     单线程:一个应用程序只有一条执行路径

     多线程:一个应用程序有多条执行路径

     多进程的意义?

          提高CPU的使用率

     多线程的意义?

          提高应用程序的使用率

(2)Java程序的运行原理及JVM的启动是多线程的吗?

     A:Java命令去启动JVM,JVM会启动一个进程,该进程会启动一个主线程。

     B:JVM的启动是多线程的,因为它最低有两个线程启动了,主线程和垃圾回收线程。

(3)多线程的实现方案

     A:继承Thread类

     B:实现Runnable接口

 (4)线程的调度和优先级问题

     A:线程的调度

          a:分时调度

          b:抢占式调度 (Java采用的是该调度方式)

     B:获取和设置线程优先级

          a:默认是5

          b:范围是1-10

(5)线程的控制(常见方法)

     A:休眠线程B:加入线程

     C:礼让线程D:后台线程

     E:终止线程

(6)线程的生命周期

     A:新建B:就绪C:运行

     D:阻塞E:死亡 

原文地址:https://www.cnblogs.com/hehaiyang/p/4655141.html