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

---------------------- 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培训、期待与您交流! ----------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值