问题描述
第一章Java语言简介1.Java语言的平台独立性Java是一种具有平台独立性的编程语言,它在源程序级上保证了其基本数据类型与平台无关,Java源程序编译后产生的二进制代码是一种与具体机器指令集无关的指令集合,通过JVM(Java虚拟机),可以在不同的平台上运行。也就是说,JVM为我们隔离了纷繁复杂的外部网络世界,只要计算机安装了JVM,就可以一致地运行Java程序。第二章Java语法基础1.作用域的一般规则在作用域之内声明的变量对于在该作用域之外的代码不可见。这样,当在作用域中声明的变量,事实上是将它从未授权的访问、修改中保护起来。从某种意义上说,作用域规则提供了封装的基础。注意:尽管块可以被嵌套,但是不能在块内与块外声明具有相同变量名的变量。在这一点上,Java与C/C++不同。第三章Java的面向对象编程基础1.Java中的类类是Java的核心,它是整个Java语言的基本单元,因为在Java看来,一切事物都是类。用Java语句语言进行程序设计就是定义类和使用类的过程。类可以分为两种,一种是系统定义好的类,即Java类库中的类,另一种是用户自定义的类。Java类库是一组由其他开发人员或软件供应商编写好的Java程序模块,每个模块通常对应一种特定的基本功能和任务。当自己编写Java程序需要完成其中某一功能时,就可以直接利用这些现成的类库,而不需要一切从头编写。因而,是否尽可能多地熟练掌握Java类库,决定了一个Java程序员能力的高低。2.使用类库中系统定义好的类的方法第一种方法:继承系统类,在用户程序里创建系统类的子类。例如:每个Java小应用程序都是java.applet包中的Applet类的子类。第二种方法:创建系统类的对象。例如:在图形界面的程序中接受用户的输入时,就以可创建一个系统类TextField类的对象来完成这个任务。第三种方法:直接使用系统类。例如:在字符界面向系统标准流输出字符串时使用的方法:System.println(),就是使用系统类System的静态属性Out的方法。无论使用那种方法,使用系统类的前提条件是这个系统类对用户程序应该是可见的类。为此用户需要用import语句引入它所用到的系统类或系统类所在的包。3.类的声明与类的对象类的声明是通过关键字class来创建的,它实际上是定义了新的数据类型,今后可以使用该名创建类的对象(实例),类声明仅创建了模板,但并不创建对象。类对象的创建是通过关键字new来创建的,它实际上创建了包含在类中定义的每个变量的一个拷贝。4.Java修饰符小结类修饰类成员public公共类默认abstract抽象类无对象final最终类无子类成员访问控制符public所有其它类皆可访问本包中的类可以访问protected本包中的其它类和所有其它包中的子类本包中的其它类privateprotected仅该类的所有子类可以访问仅该类当前包中的子类private仅该类本身可以访问非法默认本包中的类可以访问成员方法修饰符abstract抽象方法是没有方法体的方法抽象方法必须在抽象类中定义非法final最终方法是不能被覆盖的方法非法 static静态方法是类方法,不能处理非静态的成员变量native本地方法的方法体由其它语言编写,在运行时加载sychronized同步方法在运行前对它所属的类或对象加锁,防止其它线程访问,运行结束前解锁非法修饰符组合abstract与final;abstract与static;abstract与native成员变量修饰符static静态变量是类的成员变量,不专属于某个对象,用类前缀调用final类的成员变量,常与static修饰符同时使用transient系统保留volatile易失变量,可能被其它线程所改变方法局部变量方法的局部变量可以用final来修饰,表示该局部变量为常量4.接口接口(interface)是方法定义(没有实现)和常数的集合,在类等级的任何地方都可以使用接口定义一个行为的协议并实现它。Java不支持直接的多重继承,但通过接口,可以间接地实现多重继承,为编程带来了方便。通常接口就被称为多重继承的替代物,然而多重继承和接口提供非常不同的功能。5.包的作用对象重用是面向对象编程的主要优点之一,在Java语言中,对象是以类的形式体现的,因此对象重用也就体现在类的重用上。一个类如果要在多个场合反复调用,可以把它存放在“包”中,这里的包实际上就是一组类组成的集合,通常更习惯于称之为类库。除系统本身提供的包之外,编程人员还可以自行定义一些包,把相关的类集中存放。如把前面创建的Rectangle(矩形)类和其它相关的类如circle(园)等统一存放在一个Shapes(形状)包内。包的作用是多方面的,它不仅可以方便对类的引用,还可规定类的方法和变量的引用范围。正常情况下,类的成员变量和方法如果不带public、private和pretected等修饰符,就只能由同一包中的类所引用,因此,通过把具有共性的类放到同一个包中,这些类就可以相互访问其它类的变量和方法,同时又不违背面向对象编程封装的特性。6.类引用的方法通常一个类只能引用与它在同一个包中的类,如果需要使用其它包中的非public类,可以使用如下几种方法:1)使用包名、类名前缀一个类要引用其它的类,就是要使用这个类的对象并使用它的属性或调用它的方法。对于同一个包中的其它类,只需在要使用的属性或方法名前加上类名作为前缀即可。对于其它包中的类,则需要在类名前缀的前面再加上包名前缀。2)加载需要的类在上面的方法中,每当使用某一包中的类时,都需要加上包名前缀“包名”,使用起来非常麻烦。解决的办法是在程序文件部分利用import语句将需要使用的整个类加载到当前程序中,这样在程序中需要引用这个类的地方就不需要使用包名前缀了。3)加载整个包上面的方法利用import加载了shapes包中的一个类Rectangle,有些情况下可以直接利用import加载整个包,这种方法更为常用,此时这个包中的所有类都会被加载到当前程序中。加载整个包的语句如下:importshapes.*;7.成员变量的继承与隐藏1)成员变量的继承子类是从父类继承所有非私有的成员变量而不是把父类成员变量的定义部分复制一遍,这样做的好处是减少程序维护的工作量。2)成员变量的隐藏如果在子类中对从父类继承来的成员变量进行重新定义,即出现了子类变量对父类变量的隐藏。所谓隐藏是指子类拥有两个相同名字的变量,一个是继承自父类,另一个是由自己定义的。当子类执行它自己定义的方法时,如果操作该变量,所操作的是它自己定义的变量,而把继承自父类的变量“隐藏”起来。当子类执行从父类继承的操作时,如果操作该变量,所操作的是继承自父类的成员变量。8.方法的继承、重载与覆盖1)方法的继承父类的所有非私有方法都可以被子类继承和直接调用。2)方法的覆盖正如子类可以定义与父类同名的成员变量,实现对父类成员变量的隐藏一样,子类也可以重新定义与父类同名的方法,实现对父类方法的覆盖。当在子类中调用同名的方法时,一般情况下是调用它自己定义的方法,因而实现了对父类方法的覆盖,如果要调用父类的方法,只需在方法名前使用不同的类名或对象名即可。3)方法的重载子类定义同名方法覆盖父类的方法是面向对象方法中多态技术的一种实现。所谓多态就是指同名的不同方法共存,它有助于隐藏对象内部的实现细节,提高程序的抽象程序,是面向对象程序设计中经常使用的方法。实现多态技术的另一种重要手段就是方法的重载。与方法覆盖不同,重载不是子类对父类同名方法的重新定义,而是类对自己已有的同名方法的重新定义。第四章异常处理1.Java的异常处理机制由于Java程序是在网络环境中运行的,安全成为需要首先考虑的重要因素之一,为了能及时有效地处理程序中的运行错误,Java引入了异常和异常类。作为面向对象的语言,异常和其它语言要素一样,也是面向对象规范的一部分,是异常类的对象。Java中定义了很多异常类,每个异常类都代表了一种运行错误,类中包含了该运行错误的信息和处理错误的方法等内容。每当Java程序运行过程中发生了一个可识别的运行错误时,即该错误有一个异常类与之相对应时,系统都会产生一个相应的该异常类的对象,即产生一个异常。一旦一个异常对象产生了,系统中就一定有相应的机制来处理它,确保不会产生死机、死循环或其它对操作系统的损害,从而保证整个程序的安全运行,这就是Java的异常处理机制。第五章Java的多线程程序设计1.主线程与多线程每个Java程序都有一个缺省的主线程,对于Application,主线程是main()方法执行的路线,对于Applet,主线程指挥浏览器加载并执行Java小程序。要想实现多线程,必须在主线程中创建新的线程对象,Java语言使用Thread类及其子类的对象来表示线程,必须在主线程中创建新的线程对象。Java语言使用Thread类及其子类的对象来表示线程,新建的线程在它的生命周期中,总处于某种状态。处于不同状态的线程可进行不同的活动,完成不同的任务。2.线程的五种状态1)新建状态可以用下面的方法创建一个新的线程:ThreadMyThread=newThread();线程在已被创建而未被执行之前,处于新建状态。这时线程实例已被分配了内存空间,它的私有数据已被初始化,但该线程还未被调用。这时可以用start()方法启动它或用stop()方法终止它。新线程一旦被调用,就进入可运行状态。2)可运行状态可以用start()方法来使新创建的线程进入可运行状态。ThreadMyThread=newThread();MyThread.start();使用start()方法后,该线程就进入可运行状态。可运行状态就是线程的就绪状态,表示线程随时可以被调用,可运行状态并不等同于运行状态。由于很多计算机都是单处理器,所以要在同一时刻运行所有处于可运行状态的线程是不可能,Java的运行系统通过调度来使这些线程共享处理器。3)运行状态运行状态表明线程正在运行,该线程拥有了处理器的控制权,将一直运行到完毕,除非运行过程中控制权被更高一级的线程强占。在发生以下四种情况之一时,线程产生阻塞状态:•调用suspend()方法•调用sleep()方法•为等候一个条件变量,线程调用了wait()方法•输入/输出流中发生线程阻塞4)阻塞状态在阻塞状态,一个线程要等它需要的事件发生后,才可以从阻塞行状态回到可运行状态。在以下四种情况下可以使线程由阻塞状态恢复到可运行状态:•通过使用resume()方法使被suspend()挂起的线程恢复到可运行状态;•如果线程由于sleep()方法进入睡眠之中,那么当sleep()方法中参数指定的时间结束时,线程就恢复到可运行状态;•如果线程是等待条件变量,那么要停止等待的话,就需要该条件变量所在的对象调用notify()方法或notifyAll()方法;•如果在输入输出流中发生了线程堵塞,那么就要由特定的输入输出指令来结束当前的阻塞状态。5)死亡状态死亡状态也就是线程的最终状态,处于死亡状态的线程不具有继续运行的能力。线程死亡的原因有以下两种:•正常运行线程完成了它的全部工作,即执行了run()方法的最后一个语句并退出。•线程被强制中止,如调用stop()方法或destroy()方法中止线程。3.创建线程的方法线程的创建有两种方法,第一种是创建Thread类的子类,该子类需要重载run()方法,分配并初始化一个该子类的对象。第二种方法是通过Runnable接口实现声明一个类,并且该类实现了run()方法。分配一个该类的对象,并作为创建Thread对象时的参数。
解决方案
解决方案二:
不知道说啥
解决方案三:
引用1楼yewuqing007的回复:
不知道说啥
+1
解决方案四:
顶多叫java知识重点用难点太抬举了