java的抽象类接口和lang包等知识

抽象类
定义:用abstract修饰的类就是抽象类。

抽象类不能有对象(也就是一抽象类不能通过new运算符直接实例化),如果抽象类中有构造方法则

子类中一定要有构造方法。

什么时候一个类将成为抽象类:

当一个或多个方法为抽方法时
当类是一个抽象类得子类,并且不能为任何抽象方法提供然后实现细节或方法主体时
当一个类实现一个接口并且不能为 为任何抽象方法提供然后实现细节或方法主体时

接口的特性:

1、 接口中只能定义抽象方法,这些方法默认为public abstract 因而在声明方法时,可以省略这些修饰符



2、 接口中声明的属性默认为public static final 修饰,因而在常量声明中可以省略这些修饰符。

接口的作用:

1、 声明方法期望一个或更多的类来实现该方法。

2、 揭示一个对象的编程接口,而不揭示类的实际程序体,当将类的一个包输送到其它开发程序中它是非

常有用的。

3、 捕获无关类之间的相似类,而不强迫类的关系。

一、异常:Java编程语言中,异常类定义程序中可能遇到的轻微的错误条件,可以写代码来处理异常并记叙

程序执行,而不是让程序中断。在程序执行中,任何中断正常程序流程的异常条件注释为错误或异常。

二、产生异常的情况

1、想打开的文件不存在。

2、网络连接中断。

3、受控操作超出预定范围。

4、正在装载的类文件丢失。

三、异常的分类:错误和异常

错误:jvm系统内部错误,资源耗尽等严重问题。

异常:因编程错误或一些偶然的外在因素导致的一些问题。

错误与异常的区别:当发生错误时,程序员无能为力,只能让程序中止,如:内存溢出,不可能指望程序

能处理这样的情况。而对于exception ,则有补救或控制的可能,程序员可以预先防范。

API中的Lang包:

一、String类的方法:

1、equals()比较2个对象的值是否相等,区分大小写。

2、equalsIgnoreCase()比较2个对象的值是否相等,忽略大小写。

3、compareTo()比较2个String对象的值是否相等,相等返回零,返回大于零的书表示前面的对象大于

后面的对象,返回小于零的数表示前面的串小于后面的串,区分大小写。

4、compareToIngnoreCase()与上面的作用相同,但是不区分大小写。

5、length()返回String的长度,就是char的个数。

6、charAt(int index)返回字符串指定位置的字符。

7、getBytes(String charsetName)适用平台的默认字符集将此String转换为byte序列,并将结果存储到一

个新的byte数组中。

8、getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)拷贝字符串的部分字符序列到指定的字符

数组的指定位置。

9、indexOf()返回第一次找到指定字符的下标,如果找到返回下标,没有找到返回-1.

10、lastIndexOf()从后面往回找,返回第一次找到的指定字符的下标位置,如果没有返回-1.

11、startWith()测试此字符串是否以指定的前缀开始。

12、endWith()测试此字符串是否以指定的字符序列结束。

13、concat()连接2个字符串并返回一个新的字符串,原字符串的值不改变。

14、subString()返回新的字符串,当前字符串的子串,该字符串从指定位置开始,到结束为止(一个参

数)。(还有带2个参数的)

16、split()根据给定的正则表达式的匹配拆分此字符串,得到拆分好的字符串数组。如果用'.'做和'|'做分

隔的话,必须这样写"
."、 "
"

17、replace() 返回一个新的字符串,它是将字符串中的所有oldString 用newString来替换,原字符串没有

发生变化。

18、toUpperCase()将所有的字符都转换为大写。

19、toLowerCase()将所有的字符都转换为小写。

20、trim()返回新的字符串,去掉字符串中最前面和最后面的空白符。

21、matchs()告知此字符串是否匹配给定的正则表达式。

22、intern()返回具有相同内容的字符串的引用,如果字符串值含有该内容的字符串则返回字符串的引用,

如果字符串值没有字符串的内容与其相同,则在字符串值中创建具有该内容的字符串,再返回新创建的字

符串的引用。
另外还有API.lang包中的的StringBuffer等;

Integer 类

1> intValue( )方法:以Int 形式返回指定的值。

2> byteValue( )方法:以Byte形式返回指定的值。

3> doubleValue( )方法:以double形式返回指定的值。

4> floatValue( )

5> shortValue( )

6> longValue( )

7> parseInt( )

8> toString( )

9> bitCount( )

10> compareTo( )

11> decode( )

12> highestOneBit( )

13> lowestOneBit( )

Float类

1> compare( )方法:比较两个指定的类float类

2> byteValue( )方法:返回这个Float值对应的byte值 ( 它被强转为一个byte)

其它方法都和Integer类差不多。

Boolean类

Boolean 类将基本类型为boolean的值包装在一个对象中,一个boolean类型的对象只包含一个类型为boolean的字段

其它的方法都是差不多。

Math类

static (double) ceil( )方法:返回小于a日最小整数。

Floor( )方法:返回大于a日最小整数。

(long) round( )方法:返回四舍五入后的整数。

Abs( )方法:返回绝对值

Min( )返回两个数 值中较小的一个

Max( )返回两个数 值中较大的一个

(double) random( ) 返回随机数

eg: System.out.println(Math.random());



DateFormart类

1>SimpleDateFormat 继承DateFormat

2>DateFormat 继承format

Format 类

它的构造方法只有一个,DateFormat( )。

Format :将一个Date格式化为日期/时间字符串

Import :import java(如 lang).*;导入


线程:

创建线程的两种方法:

1:Extends Thread (继承Thread 类)。

2:Implements Runnable(实现Runnable接口)。

一个进程就是一个执行中的程序,而每一个进程才都有自己的一块内存空间.一组系统资源,在进程概念中,每一个进程的内部数据和状态都是完全独立的,java程序通过流控制执行程序流,程序中,单个顺序的流控制称为线程,多线程则指的是单个程序中,可以有多个不同时运行多个不同的线程,执行不同的任务,多线程意味着,一个程序的多行语句可以看上去几乎在同一时间内同时运行。



线程与进程相识,是一段完成莫个特定功能的代码,是指程序中单个顺序的流控制,但与进程不同是,同类的多个线程是共享一块内存空间和一组系统资源,而线程成本的数据通常只有微处理器的寄存数据,以及一个供程序执行时使用的堆栈。所以系统在产生一个线程或者在各个线程切换时,负担要比进程少的多,线程被称为轻负荷进程(ligh__weigthprocess)



线程与进程的关系:

一个进程可以包包含多个线程,一个线程是一个程序内部的顺序控制流。





1. 进程:每个进程都有独立的代码块,和数据空间,进程切换大 。

2. 线程:轻量的进程,同一类线程贡献代码和数据空间,每个线程有独立的运行载荷程序计数器(PC)线程切换开销小

3. 多线进程:在操作系统中,能同时运行多个任务程序

4. 多线程: 在同一应用程序中,有多个顺序流,同时执行



1.vritualCPU 2.Code 3.Date

1.(VritualCPU):虚拟的CPU封装在Java.lang包的Thread类中

2.(Code) :CPU所执行的代码传递给Thread类

3.(Data) : CPU所处理的数据传递给Thread类

启动线程

public class ThreadMain //extends Thread

{

public static void main(String[] args)

{

MyThread my=new MyThread("肖恩");

MyThread my2=new MyThread("浪子");

//my.start();

//my2.start();

{color:#808080}}

}

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

import static java.lang.System.out;

public class MyThread extends Thread

{

public MyThread(String var)

{

super(var);

start();

{color:#808080}}

public void run(){

for(int i=0;i<5;i++){

out.println(getName()+" "+i);

try

{

Thread.sleep(3000);

{color:#808080}}

catch (InterruptedException e)

{

System.out.println(e);

{color:#808080}}

{color:#808080}}

{color:#808080}}

}



壹:如果用Thread.sleep( )方法,就得用Try块,不然会报异常!

贰::启动线程要调用start( )方法。

贰:Thread.cur r entThread( ).getName()。打印当前线程名称



1. 使用Runnable( )接口可以将CPU代码和数据分开,形成清晰的模型,还可以从其它类继承、

2. 使用Thread( )类,不能再从其它类继承,编写简单,还可以直接操纵线程无须使用Thread.cur rentThread()方法

Java程序开始运行后,程序至少会创建一条主线程,主线程的线程执行体,不是run()方法来确定的,而是main()方法、



Join( )方法:等待join的线程执行完成。

Join(long millis)方法:等待join的线程执行完成,被join的线程还没有被执行结束,则不再等待。

后台线程(daemonThread)

<一>:有一种线程,它是后台运行的,它的任务是为其它线程提供服务,这种线程,被称为后台线程,又称为守护线程,又称作为精灵线程。

<二>:后台线程的特征:如果所有的前台线程都死亡,后台线程会自动死亡



Setdaemon(boolean)方法:将该线程标记为守护线程或用户线程或后天线程.。

Yield( )方法:与sleep方法有点相似,正在执行的线程暂停,但不会阻塞该线程,它只是将该线程转入就绪状态,当莫个线程调用了yield方法,暂停之后,只有优先级与当前线程相同或着优先级比当前线程更高的就绪状态,才会获得执行的机会。





Slep( )方法与Yield( )方法的区别:

1>:sleep( )方法暂停当前线程后,会给其它线程执会,但yield( )方法只会给优先机相同或优先级更高的线程机会。

2>:Sleep( )方法会将线程转入阻塞状态,直到经过阻塞时间,才会转入就绪状态,而yield( )方法不会将线程转入阻塞,它只是强制当前线程进入就绪状态,因此完全有可能莫个线程调用yield( )方法暂停之后,立既再次获得处理资源被执行。

3>:Sleep( )方法捕捉异常或显示异常声明抛出异常,而yield( )方法没有抛出任何的异常

4>:Sleep( )方法比yield( )方法有更好的可移植性,通常不要依靠Yield( )方法来控制并发线程的执行。

Void suspend()方法:挂起线程;

Void resume()方法:重新启动线程。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值