抽象类
定义:用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()方法:重新启动线程。
定义:用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()方法:重新启动线程。