您的位置:首页 > 职场人生

黑马程序员0831_java基础知识+多线程部分

2011-08-31 22:14 507 查看
---------------------- android培训、java培训、期待与您交流! ----------------------

*自定义异常类实验:要写多个catch对不同的异常做不同的反应的话,就要在定义类时throws 不同的异常类型,而不能笼统的throw 一个Exception了事,不然编译报错,也不能加上Exception,前后都不能

*try再加不同的catch,就可以捕获不同类型的异常,然后做出不同的反应

*刚发现不继承Exception类,直接继承Throwable类也可以的

*catch(Exception x)必须放在最后,用来捕捉其余的异常,在它后面的catch不再有用

*利用异常也可以实现程序的跳转,在try中利用条件判断或者其他的throw不同的异常,然后被try捕获,再跳转到相应的catch中,

*try后再加个finally的作用是不管是否发生异常,finally里的代码都会被执行(即使try中或catch中有return,除非使用了System.exit(0),即程序彻底结束推出)

*一个方法被覆盖时,覆盖它的方法必须扔出相同的异常或异常的子类。

如果父类扔出多个异常,那么重写(覆盖)方法必须扔出那些异常的一个子集,也就是说不能扔出新的异常。

<--包(package)-->

*在源程序的前面加上package空格加包名

*javac -d . 源文件名即可将类自动放在包名对应的目录中,其中.表示包放在当前目录中

//这里jdk设计的很不人性化,应该能直接生成包的结构,不过话又说回来,难道人家的编程习惯和我们不同?

*几个类的包名只要对应,而它们各自所在的包却不在同一个目录,但是仍然可以通过java去运行,当然classpath也应该把各自所对应的包名所在的目录也都设置好。

*包名是靠package来命名的,而不是靠文件夹结构来赋予的,java时包名也会包含在类名中

*可以通过用import+包名.*;的语句来省去在源代码中每个其他的包的类前面加包名的麻烦,也可以将*号改为具体的类名

*父包和子包之间没有任何的从属,继承等关系

*当编译器提示某个类找不到时,可以有三个步骤来检查:1.类名是否写错,比如大小写,相似字符等;2,包名是否正确,或包是否import了;3,classpath的设置是否正确,比如包所在的目录有没有添加在classpath中。//这点感觉很好,还教大家调试程序错误的方法,其实调试错误真是个很痛苦的过程啊。。。呜呜。

*【jdk中常用的包】

java.lang----包含一些Java语言的核心类,如String、Math、Integer、System和Thread,提供常用功能。

java.awt----包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)。

java.applet----包含applet运行所需的一些类。

java.net----包含执行与网络相关的操作的类。

java.io----包含能提供多种输入/输出功能的类。

java.util----包含一些实用工具类,如定义系统特性、使用与日期日历相关的函数。

<--访问控制-->

*类中方法的访问控制:

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

| | private | default | protected | public |

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

| 同一类 | √ | √ | √ | √ |

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

| 同一包中的类 | | √ | √ | √ |

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

| 子类 | | | √ | √ |

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

| 其他包中的类 | | | | √ |

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

*类本身也有访问控制,即在定义类的class关键字前加上访问控制符,但类本身只有两种访问控制,即public和默认,父类不能是private 和 protected,否则子类无法继承。public修饰的类能被所有的类访问,默认修饰(即class关键字前没有访问控制符)的类,只能被同一包中的所有类访问。

<--java的命名习惯-->

*假设xxx,yyy,zzz分别是一个英文单词的拼写。

包名中的字母一律小写,如:xxxyyyzzz。

类名、接口名应当使用名词,每个单词的首字母大写,如:XxxYyyZzz。

方法名,第一个单词小写,后面每个单词的首字母大写,如:xxxYyyZzz。

变量名,第一个单词小写,后面每个单词的首字母大写,如:xxxYyyZzz。

常量名中的每个字母一律大写,如:XXXYYYZZZ。

<--jar-->

*用jar命令查看特别大的jar包时可以加个 > 1.txt之类的命令将详细的过程全部输出到1.txt文件中,不然内容太多,cmd屏幕显示不下

//最近发现在用zip包改后缀名的效果是一样的,只要你会写那个那个特殊的文件。话说会里,那个文件格式要求真严格啊,真是受不了。。。

<--多线程-->

一个实例:

class ThreadDemo1

{

public static void main(String[] args)

{

new TestThread().start();

while(true)

{

System.out.println("shang:"+Thread.currentThread().getName());

}

}

}

class TestThread extends Thread

{

public void run()

{

while(true)

{

System.out.println("xia:"+Thread.currentThread().getName());

}

}

}

实验发现不一定是两个线程轮流各执行一次,有时候是一个线程执行好多次,才轮另一个线程

*要将一段代码在一个新的线程上运行,该代码应该在一个类的public void run方法中,而且这个run所在的类是Thread的子类,子类要覆盖原有的run函数,在run方法中的代码会在新线程上运行。

---------------------- android培训、java培训、期待与您交流! ----------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: