计算机二级Java笔记/重难点易错点总结(按章节归纳整理)

一、java的体系结构:

1、Java程序首先由编译器转换为标准字节代码,然后由虚拟机来解释执行

     Applet是java的一类特殊应用程序,它潜入HTML中,可以实现多媒体的用户界面或复杂的计算,可以在浏览器上运行;

2、JDK的bin目录下由编译器、解释器等工具;lib目录下是库文件;jre目录是java程序运行环境的代码库;

3、java类库的核心是java包,javax扩展包,Org包

     Java包包括:

     (1)java.lang包,封装编程要用的基本类,包括Object、Class、System、Interger、Thread,是java程序默认引用的包

     (2)java.awt包,封装抽象窗口工具包,提供构建和管理用户图形界面的功能

     (3)java.applet包,为Applet提供执行所需要的所有类,主要是访问Applet内容的通信类

     (4)java.io包,向程序提供文件输入输出操作的类

     (5)java.util包,提供实用程序类和集合类,如日期方法、Arrays等;

 

    Javax扩展包包括:

         javax.swing包,提供构建和管理应用程序的图形界面的轻量级构件

 

4、package语句在java程序中最多有一个,且位于最首位,用于使文件存入指定包;

      import语句在java程序中可以有任意个,必须在类定义之前;

      源文件中最多只能有一个public类(公共类),且与源文件名相同;

 

5、JDK中的主要工具:

     (1)javac.exe:java编译器,以.class为扩展名讲源代码译为字节码,并存入工作目录中,javac 文件名.java,其中,-d<目录>可以指定保存目录;

     (2)java.exe:java解释器,执行字节码,java 类名 [程序参数]

     (3)javadoc.exe:java文档生成器,对java源文件和包以MML格式产生AP文档,javadoc 包名 javadoc 文件名

     (4)javap.exe:java类分解器,对.class文件提供字节代码的反汇编并打印,javap 类名

二、Java简单数据类型概论:

1、java变量、常量、对象和类的命名规则要求只能以字母、下划线、美元符作为首字母,不能用数字或其他字符为首字母;

2、java命名出了第一条的要求,还有一些命名约定:

      (1)在声明类时,类名的首字母要求大写,并且类名要显示类的功能;构造函数与类名相同,所以构造函数的首字母要大写

      (2)接口名第一个字母要大写,同(1);

        (3)组成变量名各个单次的首字母要大写,但第一个单词的首字母要小写;

      (4)常量名要完全大写;

      (5)关键字均为小写;

 

3、java中所有数据类型的长度都是固定的,因此没有sizeof的保留字

4、对于浮点型数据,如果数字后没有“f”的符号,则默认为double型数据;

5、各个数据类型的数据范围

      (1)byte:8字节,-2^8~2^8-1,-128~127;

      (2)short:16字节,-2^16~2^16-1,-32768~32767;

      (3)int:32字节,-2^32~2^32-1;

      (4)long:64字节,-2^64~2^64-1;

      (5)float:32字节,

      (6)double:64字节,

      (7)char:16字节,0~65535(注意这个)

6、不能将boolean型数据转化为其他基本数据类型

7、自动转换方向:位数少的数据类型向位数多的数据类型转换;

     同时需要注意,字符型数据类型能向int数据类型自动转换,而字符串不可以

三、算术运算符

1、对于“+”号运算符,应当掌握:

     (1)两个操作数全为整数时,只要有一个数是long型,结果就是long型;

             两个数全是byte型或short型,表达式结果就是int型;

             两个数是浮点型,只要有一个术士double型,结果就是double型,否则为float型

     (2)“+”号在表示字符串连接的时,有两种情况:

              “abc”+3输出结果为abc3

               1+2+3+“abc”输出结果为6abc

2、移位运算符中:

    (1)算术右移>>:低位舍弃,高位补入原来高位的数值

    (2)算术左移<<:高位舍弃,低位补0

    (3)逻辑右移>>>:低位舍弃,高位补0

3、运算符的优先级:算术运算符,位移运算符,关系运算符,位逻辑运算符,布尔逻辑运算符,条件运算符,赋值运算符

四、流程控制

1、switch(expression)中,expression只能是int、short、byte、char,注意不能是浮点型数据及字符串类型

五、类、数组和字符串操作

1、类是java中的基本结构单元,所有方法均在类中定义

2、包含main方法的主类必须是公共类

3、抽象类中必须至少包含一个抽象方法,有抽象方法的类必须声明为抽象类,如错题集的第6题

4、在方法内部,super代表对父类对象的引用,this代表对当前对象的引用,注意关键字都是小写,不能首字母大写

5、构造方法中只能使用成员变量,当参数与成员变量同名时,用关键字this指定当前对象

6、构造方法没有返回值(但不需要用void声明),不能认为调用,只能用new自动调用

7、接口是一种只含抽象方法或常量的一种特殊的抽象类,它不包含成员变量和方法实现,只包含常量和方法的定义;

     注意:接口包含四类,第一类内部定义了抽象方法,第二类内部定义了常量,第三类内部定义了抽象方法和常量,第四类内部什么也没有,就是一个标志作用,例如Serializable接口时实现对象串行化的工具,是一个空接口。

 

8、类变量又称静态变量,用static修饰;在一个static方法内部,随时可以访问类中的static成员变量,但是要访问非static成员变量则必须寿险创建一个对象,然后通过对象访问实例变量,如错题集第7题;

9、java的内部类可以使用其所在类的静态成员变量和实例成员变量,也可以使用其所在类的方法中的局部变量

10、当基本数据类型的成员没有被初始化时,会获得一个默认初始值,如下表

 

11、java.util.ArrayList类是动态数组,是Array的复杂版本,在运行时能够动态地自动调整数组的大小,因此定义数组时不必限定数组的大小,在列表初始化时可以用add()方法对数组元素赋值;

 

12、java.lang.String用于处理长度不变的字符串;java.lang.StringBuffer用来处理长度变化的字符串;

六、异常处理

1、Throwable类是所有异常类的父类,分为Error和Exception两个子类;

2、throws关键字通常被应用在声明方法时,指定方法可能抛出的异常,多个异常用逗号隔开;

     throw关键字通常用于方法体中,并明确抛出一个异常对象(见《从入门到精通》P224例12.8)

 

七、输入输出及文件操作

1、File类提供的方法:

     (1)对文件名操作提供的方法:

             ①public String getName(),得到一个不包含路径的文件名;

             ②public String getParent(),得到文件的上一层目录;

             ③public String getPath(),得到文件路径名字符串,即路径文件名;

             ④public String[] list(),返回一个字符串数组,是此文件所在目录下的所有文件名列表;

             ⑤public String renameTo(File newName),返回重命名后的文件名;

             ⑥public String getAbsolutePath(),返回一个文件的绝对路径名;

             ⑦public File getParentFile(),得到文件对象的父路径名;

     (2)测试文件属性操作所提供的方法:

             ①public Boolean isAbsolute(),测定是否是绝对路径,返回布尔值;

             ②public Boolean isDirectory(),测定是否是目录;

             ③public Boolean exists(),测定文件是否存在;

             ④public Boolean canRead(),测定是否是可读文件;

             ⑤public Boolean canWrite(),测定是否是可写文件;

     (3)为文件信息操作和工具所提供的方法:

             ①public long length(),返回文件的字节长度;

             ②public long lastModified(),返回文件最后修改时间;

     (4)为目录操作所提供的方法:

             ①public Boolean mkdir(),创建目录;

             ②public Boolean mkdirs(),创建包含父目录的目录;

             ③public String[] list(),返回当前目录下的文件

 

2、随机文件流RandomAccessFile类,直接继承Object类,兼有输入和输出功能,即同时实现了DataInput和DataOutput接口。

     由于它是随机访问,因此文件读写一个记录的位置是任意的;

 

3、二进制文件可以作为FileOutputStream的构造方法的参数,而FileOutputStream对象作为DataOutputStream的构造方法的参数实现DataOutputStream类,如下例:

同理对input;

 

4、ByteArrayInputStream、ByteArrayOutputStream、StringBufferInputStream类是可以直接访问内存的;

5、Reader类和Writer类是抽象类,不能用来产生实例对象;

 

6、FilterInputStream和FilterOutputStream抽象类保证某时刻只有一个线程访问一个I/O流;

     Java对I/O访问所提供的同步处理机制是过滤流,字节流、字符流、文件流均不能提供同步;

 

7、关于对java的I/O部分的理解,见博客:

     http://blog.csdn.net/htq__/article/details/50993262?ticket=ST-26715-qyQeAEye3eKez9R5kPp5-passport.csdn.net

八、线程与对象串行化

1、线程和进程的区别:

      (1)多个进程的内部数据和状态都是完全独立的,而多线程是共享一块内存空间和一组系统资源,有可能互相影响;

      (2)进程是内核级的实体,进程结构的所有成分都在内核空间中,一个用户程序不能直接访问这些数据;

               线程是用户级的实体,县城结构驻留在用户空间中,能够被普通用户级方法直接访问;

      (3)程序、进程和线程的关系:

               程序是一段静态代码,它是应用软件执行的蓝本。进程对应与代码从加载到执行完毕的一个完整过程。作为执行蓝本的一段程序,可以被多次加载导系统的不同内存区域执行,形成不同的线程,而线程是比进程更小的单位。线程是程序运行中的一个子进程

 

2、线程模型包括:

       (1)一个虚拟的CPU;

       (2)此CPU所执行的代码;

       (3)代码所操纵的数据;

 

3、java中的线程体是由线程类的run()方法定义的,此方法定义线程的具体行为;

     实现run()方法有两种方式,实现Runnable接口和继承Thread类

4、在java.lang中,Runnable接口被定为:

          public interface Runnable{

                     void run();

          }

   

     通过Runnable接口建立线程的演示:

          public class X extends Thread implements Runnable{

                     public void run(){

                                System.out.println("this is run()");

                     }

                     public static void main(String args[]){

                                Thread t= new Thread(new X());          //将Runnable的一个实例作为参数传递给Thread类

                                t.start();

                     }

          }

 

5、新建的线程不会自动运行,必须调用线程的start()方法,start()方法会自动调用run()方法;

6、以同一个类的某一个对象为参数只能构造一个线程(见错题13)

7、注意,run()方法必须是不带参数的,且必须声明为void,即没有返回值;

 

8、线程的优先级划分为:MIN-PRIORITY(常数1)、NORM_PRIORITY(常数5)、MAX-PRIORITY(常数10);

     getPriority()方法用来获取线程的优先级,setPriority用来设置线程的优先级;

     创建线程后的任何时候都可以设置优先级

9、yield()方法只能使同优先级的线程有执行的机会;

10、一个程序中单独的、并发的线程对同一个对象进行访问的代码段称为临界区,在java中用关键字synchronized标识。

       由synchronized语句指定的每个对象设置一个锁,称为对象锁;当一个线程获得了对象锁之后,便拥有此对象的操作权,其他线程不能对此对象进行任何操作;

11、语句:synchronized(对象名);

                或public synchronized void 函数名(){ …… }

12、java中没有检测和避免死锁的专门机制,为了避免死锁,java程序中可以先定义获得锁的顺序,解锁按加锁的反序释放;

13、wait()和notify()都是java.lang.object类的方法,是实现线程通信的方法;

       wait()方法用于使线程等待并释放共享数据对象的锁,使其他线程能够获得此线程的锁;

       notify()方法用于通知正在等待的线程重新占有锁并运行;

 

14、阻塞状态分为对象锁阻塞状态,等待阻塞状态和其他阻塞状态;

15、可运行状态下:

                  start()方法:线程状态从新建状态转为可运行状态,但此时线程仅仅可以运行,不一定正在运行;

       运行状态下:

                  正常运行结束,则进入终止状态;

                  yield()方法:当前线程进入可运行状态;

                  sleep()方法:当前线程进入其他阻塞状态,睡眠时间到了将进入可运行状态

                   join()方法:当前线程进入其他阻塞状态;t.join()方法下当t线程结束或时间到后,线程进入可运行状态

                  wait()方法:当前线程进入等待阻塞状态;用notify()方法或时间到了之后,进入对象锁阻塞状态

                  线程请求对象的锁未获得,进入对象锁阻塞状态;此状态下,获得锁后进入可运行状态;

                  线程中有输入输出操作,进入阻塞状态;当输入输出操作结束后,进入可运行状态;

 

九、图形用户界面

swing部分:

1、Swing是java实现的轻量级结构,不依赖操作系统所提供的支持,这是它与AWT的最大区别;

2、Swing构件都是AWT的Container类的直接子类或间接子类;

      大多数Swing构件又是JComponent的子类,它是一个抽象类;

    

   

     javax.swing包中定义了两种类型的构件:顶层容器(JFrame,Japplet,Jdialog,JWindow)和轻量级构件;

 

3、Swing采用一种成为MVC的设计范式,即“模型-视图-控制器”,模型用来保存内容,视图用来显示内容,控制器用来控制用户的输入;

4、Swing虽然有顶层容器(JFrame,Japplet,Jdialog,JWindow),但是不能把构件直接添加到顶层容器中,必须先获取容器中的内容面板,在把构件加入内容面板中,例如:

      JFrame jf=new Jframe(title);

      Container container=jf.getContenPane();

        container.add(……);

 

二级java 公共基础知识部分30分 专业语言部分 70分 Java语言程序设计 基本要求: 1. 掌握Java语言的特,实现机制和体系结构。 2. 掌握Java语言中面向对象的特性。 3. 掌握Java语言提供的数据类型和结构。 4. 掌握Java语言编程的基本技术。 5. 会编写Java用户界面程序。 6. 会编写Java简单应用程序。 7. 会编写Java小应用程序(Applet)。 8. 了解Java的应用。 考试内容: 一、 Java语言的特和实现机制 二、 Java体系结构 1. JDK目录结构。 2. Java的API结构。 3. 开发环境设置。 4. Java程序结构。 三、 Java语言中面向对象的特性。 1. 面向对象编程的基本要领和特征。 2. 类的基本组成和使用。 3. 对象的生成、使用和删除。 4. 接口与包。 5. Java类库中常用类和接口。 四、 Java简单数据类型及运算 1. 变量和常量。 2. 基本数据类型及转换。 3. Java类库中对简单数据类型的类包装。 4. 运算符和表达式运算。 5. 数组和字符串。 五、 Java语言的基本语句 1. 表达式语句。 2. 条件语句。 3. 循环语句。 4. 注释语句。 5. 异常处理。 六、 Java编程技术基础 1. 线程的要领和使用。 2. 同步与共享。 3. 串行化要领和目的。 4. 串行化方法。 5. 串行化的举例。 6. 基于文本的应用。 7. 文件和文件I/O。 8. 汇集(collections)接口。 七、 编写用户界面程序 1. 图形用户界面。 2. AWT库简介。 3. SwingF简介。 4. AWT与Swing比较。 八、 编写小应用程序(Applet) 1. 小应用程序概念。 2. 安全机制。 3. Applet执行过程。 4. Applet的图形绘制。 5. Applet的窗口。 6. Applet的工作环境。 7. Java Application 和Applet。 九、 Java的应用 十、 J2DK的下载和操作。 考试方式: 笔试:90分钟,满分100分,其中含公共基础知识部分的30分。 上机操作:90分钟,满分100分。 上机目类型要求: (1) 基本操作。 (2) 简单应用。 (3) 综合应用。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值