1、 L 课程知识点调查表(填表说明:在各知识点后的掌握限度栏内画“”即可,掌握限度分为A、B、C三类,其中A为:可以依据相关知识点完毕笔试中的填空、判断、代码补全及概念简答等;B为:可以根据程序需求运用相关知识点编写完整的程序代码;C为:可以用语言准确、完整的表述相关知识点及该知识点的典型应用实例。每个知识点的A、B、C三项均可选。)编号知识点名称01classpath的设立及作用类文献搜索途径。可以设立为目录,也可以设立为.(即当前目录)作用:告诉java虚拟机到哪去寻找用户定义的类和第三方提供的类。当设立了classpath变量之后,JVM会沿着classpath变量中指定的目录去查找要执行
2、的类文献。classpath变量的值可以有多个,值与值之间必须用“;”隔开如何理解GC:垃圾回收机制(garbage collection)回收失去引用的内存,程序员不能强制的执行垃圾清理,但是可以建议其回收机制,一般情况下都会按照建议进行。由于程序语句不负责建立和释放内存,jvm自动完毕。涉及到一个方法Finallize();来进行垃圾整理,在清理垃圾是整理内存,不需要我们手动完毕。GC之前执行内存整理的工作的。(一般假如cpu已经占用很多,那么不会去启动释放程序;假如跟建议的垃圾很一致,但是占用内存却很少,垃圾回收机制)02path的设立及作用内部文献搜索途径设立为javac.exe应用程
3、序所在目录,即.javajdkbin目录作用:当在命令行窗口中之机运营javac.exe应用程序时,系统一方面会在当前目录(即c:Documents and Settingadmin)下查找这个程序,然后会沿着path变量中设立的途径继续查找。假如path没有设立,会出现“javac不是内部或外部命令,也不是可运营的程序或批解决文献”错误03JAVA数据类型( 涉及基本类型和引用类型)8种基本数据类型:byte,short,int,long,float,double,char,boolean(分别相应8种基本数据类型包装类,finally,不可被继承。此外String和StringBuffer
4、类也是finally的。)3种引用数据类型:类,接口,数组04JAVA基本运算符号1、算术运算符:+,-,*,/,%,+,-2、关系运算符:,=,&,|,!5、赋值运算符:=,+=,-=,*=,/=,%=6、字符串连接:=7、条件运算符:? ab?x:y(也可按照单目、双目、三目分类)05JAVA程序基本控制语句(ifelse、switchcase、while、for)Java程序设计语言的程序流程控制与C/C+基本相同,总共有三种执行方式:顺序结构、选择结构和循环结构。选择语句即条件语句有两种:ifelse,switchcase循环语句:while,dowhile,for(注意while和d
5、owhile区别,for的三个条件)swtich里支持的数据类型有那四种? byte short char int 以及JDK5.0中的枚举类型06数组的概念及使用数组类型属于复合数据类型,它是由类型相同的元素组成的有序数据集合。因此数组的最重要的特点:元素类型相同;元素有序;所有元素公用一个名称。根据组织数据的结构不同,数组可以分为一维数组、二维数组、。一维数组声明:arraytype arrayName;或arraytype arrayName;初始化分为:1、静态初始化。如:String str = “aaa”,”bbb”,”ccc”; String str1 = “111”,”222”
6、,”333”; 2、动态初始化。如:char charName = new char5; 注意:动态初始化必须给出长度,否则报错:缺少数组维数。二维数组声明:arraytype arrayName;或arraytype arrayName;初始化:1、静态初始化。2、动态初始化:可以只指定第一位的长度而不指定第二维的。此外,数组具有length属性。当数组是引用数据类型是,必须为每个元素实例化,否则会出现空指针异常。07方法的声明及使用声明:修饰符 返回值类型 方法名 (参数列表)方法体;在非静态方法中可以直接调用非静态方法在非静态方法中可以直接调用静态方法在静态方法中可以直接调用静态方法在静
7、态方法中调用非静态方法,则需要通过对象调用。08方法的重载方法的重载是多态的实现手段之一,解决了命名空间问题(在类中实现相同功能的方法)满足条件:1、方法名相同 2、方法的参数类型不同或参数个数不同或参数类型顺序不同 3、返回值类型可以相同也可以不同09类的定义定义:修饰符 class 类名 成员变量;方法10对象的产生与使用Java语言中使用关键字new调用构造方法来创建新对象。类名 对象名 = new 类名();通过对象调用方法或修改属性值。11匿名对象不定义对象的引用名称,而直接调用方法。只能一次性使用。好处:节省空间(GC)假如对一个对象需要进行一次调用,可以使用匿名对象。常用匿名对象
8、作为一个实参传给方法调用,用完之后抛弃。12实现类的封装性面向对象的特性之一(封装、继承、多态、抽象是面向对象的四大特性)封装是一种信息隐蔽技术:1、采用接口隐藏类的实现细节2、在类中对属性封装。由于Java中对属性的操作很弱(例如年龄的问题,可以在set方法中控制),实现程序健壮性。成员变量使用private关键字修饰,提供setter和getter方法进行设立和返回属性值。13构造方法的定义与使用1、 构造方法定义:方法名与类名相同;无返回值类型;方法中不能使用return返回一个值。2、 构造方法在实例化对象时自动调用,重要用来为类中属性赋值。3、 假如一个类的构造方法用private修
9、饰,那么它不能有子类4、 当使用new关键字创建对象时,会调用构造方法。14对象的比较(“=”、“equals()”)“=”是运算符。比较的是值(基本数据类型)和引用的地址(引用数据类型)Equals()是 Object中的方法、没有复写情况下和= 同样(用来比较两个对象的hashCode码(散列码)即地址)、String类复写了object类的equals方法,比较的是两个对象的内容String类覆写equals,一方面比较内存地址(引用),假如相同,返回真;假如不同,继续比较,比较字符串的每个字符,相等返回真,不相等返回假15在类内部调用本类方法静态方法中可以直接调用静态方法,但不能直接调
10、用非静态方法,需要通过对象调用。非静态方法中可以直接调用,或使用this关键字调用。16this关键字的使用用于区别成员变量和局部变量;1、 调用本类中的方法:a、一般方法 this.方法名(实参列表)b、构造方法 this(实参列表),位于构造方法首行2、 调用本类重的属性(this.属性名)3、 可以用来表达当前对象4、 不能与super关键字同时出现在构造方法中5、 不能用在static修饰的方法或代码块中17构造方法的重载规则与一般方法重载一致。(参见08题)当采用new关键字创建对象时,会自动调用构造方法,重要用来为类中的属性初始化。每个类中都有一个默认的无参构造器,当在类中添加一个
11、有参数的构造方法,则默认的构造方法遗失。18对象的引用传递在Java中,参数传递分为基本类型参数传递与对象类型(即引用类型)参数传递。基本类型参数传递意味着当将一个实参值传递给一个方法时,假如方法修改了该参数,改变的形参,而原始的实参的值保持不变。引用类型变量传递将一个参数传递给一个方法后,方法接受的是一个引用变量的值,这个值为某个对象的内存地址值。引用变量的参数传递仍然是值传递。19static的使用(方法、属性)可声明成静态变量(全局变量,相对于这个类中的所有实例化对象,只要一个对象改变了它的值,其他对象的所值都改变)静态方法(不能直接调用非静态方法,要用对象.方法来调用;在非静态方法中能
12、直接调用静态方法,用类名.方法调用)静态代码块(对静态成员进行初始化),同一个类中优先于主函数和构造方法执行。(三者的关系是:静态成员声明静态代码块构造方法 )静态方法的好处:便于调用,对于Java虚拟机性能更好哪些类中全是静态方法:Math,Collections, ArraysCollection和Collections区别:Collection是一个接口,不通过键值对来存放对象,是一一存入的,其下有很对子接口来继承,常用的有set,list. set不能存放反复对象,list可以;set决定存放位置,list可以手动。存放的方法是用ADD();取值用iterator取(同一对象的hash
13、code相同。不同对象的hashcode也会相同,反例就是:String s=”abc” String s1=new String(“abc”); s与s1的hashcode同样)collections是一个类,内部全是静态方法。用来解决集合对象,可以将解决好的对象存放到另一个类中20对象数组的使用(静态初始化、动态初始化)1、 声明及静态初始化:Person ps = Person p1,p2,p3 ; /p1,p2,p3分别为Person的对象2、声明及动态初始化Person p;/对象数组声明p=new 类名3;/动态初始化ps0=new Person();/分别对每个元素初始化ps0.
14、name=”zhangsan”;ps0.age=13;21类的继承通过继承可以简化类的定义,扩展类的功能。extends java只支持单继承。继承是“is a”的关系。子类继承父类中非private属性和方法。子类对象实例化时默认调用父类无参构造方法(子类构造方法首行)。22子类对象的实例化过程当采用new关键字实例化子类对象时,一方面会默认调用父类无参构造方法,接着调用子类构造方法。23方法的覆写作用:扩展父类方法的功能。1、 只有发生在子类和父类之间2、 子类方法和父类的方法名、参数、返回值类型都必须一致。3、 规定子类方法的访问权限不能小于父类的访问权限。4、 子类实例化父类对象,子类
15、调用父类的方法时,会默认调用子类中覆写父类的那个方法5、 子类继承父类的方法,访问权限只能扩大不能缩小,可用public,protected,或default,其中protected和default的区别就是后者必须在同一个包里。private的使用的好处,代码隐藏,安全;对赋值的限制。假如只是在本类中使用,不想外界得到,只要写SET方法就可以,不写GET方法(对赋值限制的体现)。public,protected,default,private的区别(1)public:是公用的,不同包也可访问(2)protected;doGet()和doPost()就是protected的,是在不同包内的,但
16、继承了不是同一个包的方法,子类是能访问的(3)default(默认的);只是在同一个包内才可以被访问。(4 private;只有在本内中才可访问24super的使用super调用父类的属性:super.属性名;super调用父类的方法:super.方法名(实参列表);调用父类中特定构造方法:super(实参列表);调用父类中构造方法时,super()必须放在子类构造方法的首行。this和super不能同时调用构造方法。用super调用父类中的方法时,会调用子类中被覆写了的方法。假如子类中没有覆写父类中的方法,仍能用super调用父类中的方法Ps:一个类的构造方法假如用private修饰,那么它
17、不能有子类。25this与super的区别this用于调用本类的属性和方法,或代表当前对象。super用于调用父类的属性和方法。两者不能同时调用构造方法。26final关键字修饰符。可以修饰变量、方法、类。final修饰的变量为常量,只能被赋值一次final修饰的方法不能被复写final修饰的类不能被继承(构造方法不能被复写)String,Maths都是用final修饰的类。27抽象类的使用抽象类用abstract关键字修饰。抽象类仅提够一个类的部分实现。抽象类可以有实例变量,可以同时有抽象方法和具体方法,它提供一个继承的出发点,不能呢个被实例化。因此,抽象类只能用来继承。不能被直接实例化抽象
18、类的子类,要么是抽象类,要么实现抽象父类的所有抽象方法(复写)抽象类可以有构造方法。28接口的使用接口是常量和抽象方法的集合。接口中不能有普通方法和变量。常量必须被赋值。接口可以实现多继承(即接口可以继承一个到多个接口,但不能继承类)一个类可以实现多个接口接口不能有构造方法extends和implements同时出现,extends写在implements前面抽象类可以实现接口,并且不必实现接口中的所有抽象方法。Ps:抽象类和接口的区别抽象类和接口是Java面向对象体系当中非常重要的两个元素,在语法和使用方面都有很多的区别,下面我就从这两个方面来回答这个问题:第一, 接口和抽象类在语法上的区别
19、重要体现在以下的几个方面:a) 一个类可以实现多个接口,而除了Object之外,一个类只能继承一个父类;b) 接口当中所有的方法都是抽象方法,并且默认为public权限,而抽象类当中可以有抽象方法,也可以没有抽象方法c) 接口当中的变量所有为全局常量,而抽象类当中可以定义任何类型的变量;d) 抽象类当中有构造函数,而接口没有;第二, 在使用方面,接口使用的会更多一些,由于接口可以更好的隐藏实现的细节,减少系统的耦合度,从而提高可扩展性,下面就谈一下我在开发中所理解的抽象类和接口的区别:a) 在我经常使用的设计模式当中,如工厂模式,依赖诸如模式,DAO模式等,重要使用的是接口,而抽象类只在模板模
20、式当中有一些比较局限的应用;b) 在我经常使用的Spring和Hibernate当中,接口的使用也占了很大的比例,特别是在Spring当中,模板模式也被改导致使用接口实现;所以说在平常的开发当中,接口的使用更加的频繁,由于它可以更好的解除耦合,现在的面向对象也提倡少用继承,使用面向接口的编程方法会更好。29对象的多态性,向上转型及向下转型的概念对象的多态性表现为转型(即向上转型和向下转型)及方法的重载和复写。1、转型:规定两个转型的对象有继承或实现关系。向上转型:子类对象转换成父类对象,自动转换。 父类对象用子类实例化。 转型后的对象不能调用子类对象特有的方法。但调用的方法为子类自身的方法。向
21、下转型:父类对象转换成子类对象,需要强制转换。 只有发生过向上转型,才干发生向下转型。使用什么方法时,需要使用向下转型:getAttribute();arraylist 和 hashmap等任何connection对象里的get()方法;过滤器里的方法2、方法的重载是多态的实现手段之一,解决了命名空间问题(在类中实现相同功能的方法)满足条件:A、方法名相同 B、方法的参数类型不同或参数个数不同或参数类型顺序不同 C、返回值类型可以相同也可以不同3、方法的覆写,作用:扩展父类方法的功能A、只有发生在子类和父类之间B、子类方法和父类的名称、参数、返回值类型都必须一致。C、规定子类方法的访问权限不能
22、小于父类的访问权限。转型时,会容易发生classCastException错误。为什么要设计向上转型:ArrayList是一个类,可以方其他的很多类型的对象,如称arr,但在开发时只放一个单一的类型,相称于重新分派空间。否则取的时候很麻烦。存放时的用add()方法,放的是Object类型的对象,即只要属于引用对象就能放入。如放入一个字符串,在放入arr.add()那一刻,发生了向上转型,好处是实现更多类型的兼容,对象的具体特性丢失,即精度丢失。要从多种类型中取出具体的对象类型,即找回精度,就要发生向下转型。30对象多态性在抽象类及接口上的应用面向接口编程的优点:1、调用者不用知道其使用对象的具
23、体所属类 2、一个对象可以很容易被另一个对象(同样实现了接口)所替换 3、对象间的连接不必硬绑定到一个类的对象上,因此增长了灵活性 4、松耦合性 5、提高可扩展性缺陷:设计复杂性有所增长工厂模式是面向接口编程的一个典型应用。工厂模式是OCP(开放封闭法则)的一种解决方案工厂模式原理: 1、采用面向接口编程的设计思想2、减少系统的耦合度3、提高程序的可扩展性组成部分: 1、产品(抽象产品),用接口或抽象类实现 2、具体产品,是抽象类(产品)的子类或实现了接口(产品)的类 3、生产者(工厂),负责生成产品对象应用产品:需求改变时只需要改变工厂,得到不同的产品实例。31异常的概念及使用异常是程序中断
24、错误中断了正常指令流的一种事件。通过异常解决机制,可以用一种结构化的可控方式来解决运营时的错误。在Java中所有的异常都用类来表达,并且所有的异常类都是继承自java.lang包中的Throwable类。Throwable类有两个直接子类:Error(用来表达编译和运营错误,如程序进入死循环,内存溢出等,Error解决一般由系统承担,java自身不提供相应的Error解决机制)和Exception(用来表达由程序活动所导致的错误,如运算时除数为零等。当程序运营出现Exception时,在程序中加入异常解决代码,仍可使程序继续运营直至程序结束。由于Exception是可以检测和解决的,因此产生了
25、相应的异常解决机制)。java编译器规定方法必须声明抛出也许发生的非运营时异常,但是并不规定必须声明抛出未被捕获的运营时异常。异常(即exception和error,两者是平级的,且都是继承自throwable)(代码有错不能容易捕获异常,否则容易存在一直存着NULL值的问题,例如:表单中有一控件名为name1(用户名,应当是name,写错成name1),但servlet取的name值,则name的值为null,会报空指针异常的错误,若此时用异常捕获,虽然不报错,但数据库里却插入的数据,且用户名的值都是null)常见运营时异常:算数运算异常,空指针,数组下标越界,数字格式化异常,类转换异常常见
26、异常:IO异常(必须捕获和抛出),SQLException , ServletException, ClassNotFoundExceptiom异常的使用:1、捕获异常:trycatch()2、抛出异常:在捕获一个异常对象之前,try代码块中必须生成一个异常对象并把它抛出。异常既可以由java虚拟机自动抛出,也可以通过throw语句手动抛出异常。(throw语句必须为异常创建一个对象,不能仅抛出一个类型。)3、异常声明:在某些情况下,假如一个方法产生自己不解决的异常,它就必须在throws字句中声明该异常,它属于方法声明的一部分,紧跟在形参列表之后。4、自定义异常:继承自Exception类。
27、不推荐使用。32Java类的编写规范1、 名字必须为一个标记符2、 类名或接口名首字母大写,其余每个单词的首字母大写3、 方法名的首字母小写,其余单词的首字母大写,方法名尽量用动词。如:getName4、 变量名与方法名一致,变量名尽量用名词, 5、 临时变量简朴即可6、 尽也许采用故意义的单词7、 包名小写33trycatch语句的使用try代码块中是一段也许产生异常的代码,又称“监控区域”;catch语句的参数涉及一个异常类型和一个异常对象。该异常类型指明了catch语句所解决的异常类型,异常对象则在try中产生。中为对异常的解决。与一个try相关的catch语句可以有一个或多个,异常的类
28、型决定了要执行那个catch语句。执行顺序:1、一方面执行try代码块中的所有语句2、 假如try中无异常产生,不执行catch(),直接执行catch之后的语句3、 假如try中有异常产生,则发生异常之后的语句不会被执行,直接跳到catch()中执行。之后顺序执行。4、 假如catch()中的异常类型与产生的不同,则执行顺序与未捕获异常同样。34throws与throw 的使用方法throws用在方法的声明处,表达此方法不解决该类异常,而是交给方法的调用处解决。throw用在方法的内部,用来手动的抛出异常对象。要么与trycatch一起使用,要么与throws一起使用。35finally关键
29、字对于一些代码,也许会希望无论try中的异常是否被抛出,它们都能得到执行。可以在异常解决程序后加上finally子句。那么退出trycatch后,无论发生异常或者不发生异常,都会执行该段代码。finally必须用在异常中,不能孤立的使用,至少必须有TRY语句(但只有try,没有catch和finally会报错,即try,catch和finally都不能单独使用;一个try可以有多个catch;try没有catch也行,但必须要有finally;不管之前是否抛出异常,都会执行finally;现在try中加一个return语句 ,但finally仍然会执行,且先执行finally再执行return
30、;finally的作用是关闭资源),finalize()是在GC清理垃圾前做的整理工作,是一个方法final是修饰符39List、ArrayList的使用List接口继承自Collection接口,以定义一个允许反复项的有序集合。此接口不仅可以对列表的一部分进行解决,还添加了面向位置的操作。List有两个重要的实现类,分别为:ArrayList和LinkedList。使用哪种取决于特定的需求,假如要支持随机访问,而不必在除尾部的任何位置插入或删除元素,那么可以选用ArrayList;如贵哦要频繁的从列表的中间位置添加和删除元素,并且只规定顺序的访问列表元素,那么LinkedList是更好的选择
31、。LinkedList类添加了一些解决列表两端元素的方法,可以轻松的把LinkedList当作一个堆栈、队列或其他面向端点的数据结构,来实现堆栈或队列的操作。ArrayList类封装了一个动态再分派的Object数组。每个ArrayList对象有一个数值,这个数值用来表达存储列表中元素的数组的容量。当元素添加到ArrayList时,这个数值会在常量时间内自动增长。ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增长和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了sy
32、nchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。Arraylist的使用将A,B,C存入arraylist,并取出Arraylist str = new Arraylist();str.add(A); str.add(B); str.add(C); 遍历取出:for(int i = 0;istr.size();i+) str.get(i);或者str.get(0);str.get(1);str.get(2);Arraylist作用
33、是便于传对象,且该对象可以存放别的类型的对象,什么时候涉及到,什么时候传递多个对象的时候使用,此时才干发挥他的价值40Map、HashMap的使用Map接口不是Collection接口的继承。Map接口用于维护键-值对。该接口描述了从不反复的键到值的映射。(注意:键和值都可认为null,但是不能把Map作为一个键或值添加给自身,由于映射中键的集合必须是唯一的,用Set来支持)。集合框架中提狗狗两种常规的Map实现:HashMap和TreeMap(TreeMap实现SortedMap接口)。在Map中插入、删除和定位元素,HashMap是最佳选择。而假如要按自然顺序或自定义顺序遍历键,那么Tre
34、ssMap更好。HashMap与HashTable区别:HashMap是HashTable的轻量级实现(非线程安全的实现),他们都完毕了Map接口,重要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上也许高于Hashtable。HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。HashMap把HashTable的contains方法去掉了,改成containsValue和containsKey。由于contains方法容易让人引起误解。 Hashtable继承自Dictionary类,而HashMap是Java1.2
35、引进的Map interface的一个实现。最大的不同是,HashTable的方法是Synchronize的,而HashMap不是,在多个线程访问HashTable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。 HashTable和HashMap采用的hash/rehash算法都大约同样,所以性能不会有很大的差异。41Set、TreeSet、HashSetSet接口继承自Collection接口,并且它不允许集合中存在反复项,每个具体的Set实现类依赖添加对象的equals()方法来检查唯一性。Set没有引入新方法,所以Set就是一个Collection,只但是其行
36、为不同。TreeSet和HashSet是集合框架支持Set接口两种普通的实现。多数情况下,使用HashSet存储反复自由的容器。HashSet是为快速查找而设计的Set,存入HashSet的对象必须定义hashCode()。TreeSet是保持顺序的Set,底层为树结构,使用它可以从Set中提取有序的序列。42Iterator的使用Iterator可以遍历各种不同集合中的元素。该接口描述的是以统一方式对各种集合元素进行遍历/迭代的工具,又称迭代器。该接口中值定义了几个简朴的方法:hasNext()用于判断集合中是否仍有元素可以迭代,next()用于返回迭代的下一个元素,remove()将当前迭
37、代到的元素从迭代器指向的集合中移除。我们一般不直接创建Iterator对象,而是通过调用集合对象的iterator()方法来获取,实际返回的是Iterator接口不同实现类的对象。43String与StringBuffer的区别及使用String类和StringBuffer类都可以实现储存和操作字符串,即包含多个字符的字符数据。(1) String是由final修饰的,不能被继承. String 是不可改变的类,如String a=”b”; String a=”c”;这两个a是不同的 ,是2个对象,a=”c”时,是又重新定义了一个对象。String a=new String(”b”);有2个对
38、象,都是在堆内存里的;而栈内存里存的是a(2) StringBuffer(为了解决创建对象耗时的问题),它是可变的,其有一个方法,append的方法。append的方法,使用的时候将StringBuffer a=new StringBuffer();a.append(“abc”);a.append(“efg”);最后用a.toString();就可得到一个字符串,将StringBuffer变成String来使用。有另一个方法StringBuilder(),是一个不安全的方法,实现起来,不安全的执行速度快。-StringBuffer类表达的是内容可以修改的Unicode编码字符序列,其对象创建后
39、,所保存的字符串内容和长度都可以修改。事实上每个StringBuffer对象都拥有一个可变容量的字符串缓冲区,该缓冲区的容量可以随着内容的增长自动扩充,也可以直接设定。-StringBuilder是JDK5.0后增长的一个字符串解决类,该类可以提够与StringBuffer相同的功能。区别在于StringBuffer是线程安全的,而StringBuilder不是,即不保证其对象的同步性。因此,StringBuilder拥有更高的效率。常见的类:1. Sting;2. ArrayList; 3. HashMap;4. HttpServlet(抽象类);5 .Math;6. Date;7. Str
40、ingBuffer; 8.ExceptionString里的常用方法:1.Equals();2、charAt();3.length();(List里的length是属性,而String里的是方法,又括号的)4.substring();5.indexOf(int ch);6.trim();7.replace();(在javaScript里只替换一个);8.replaceAll();(在javaScript里就是替换多个);9.valueOf();(把各种基本数据类型转化为String型)Srtring a=;和String b;的区别:String a=是空字符串,可以调用String类的任何方
41、法,而Stirng b;是null,值,并没有给他开辟任何空间。Clone:把一个对象复制给一个对象,如:在百度收信息,需要记录用户每次查询的关键字,先是存内存(把关键字放入Static ArrayList内,他是,具有共享性,用Static来修饰,可以每次用户来输入关键字时,就不用每次都要new新的ArrayList而是直接共享),再入库()44Date、Calendar的使用45多线程 两种实现方式 场景 涉及的术语1、实现方法:继承Thread类或实现Runnable接口。区别:a、Runnable是Thread的接口,多数情况下推荐使用继承接口的方式生成线程。由于接口可以实现多线程,并
42、且Runnable只有一个run()方法,适合继承。b、在继承Thread时只需new一个实例,调用start()方法即可以启动一个线程;而在使用Runnble的时候需要先new一个实现Runnable的实例,之后用子类Thread调用。2、线程状态转换:新建态(new();),就绪态(start();),运营态,阻塞态,终止态。3、线程调度:Java线程的调度不一定是分时的,必须保证代码中的线程会不是地给其它线程运营的机会。以下方法可以做到:A、让处在运营状态的线程调sleep()方法 线程睡眠; B、让处在运营状态的线程调用yeild()方法 线程让步; C、让处在运营状态的线程调用另一个
43、线程的join()方法(非静态) 当一个正在运营的线程调用了另一个线程的join()方法,那么这个正在运营的线程转到阻塞状态,直至另一个线程运营结束才会恢复运营。sleep()和yield()的区别:A、 sleep()方法会其他线程的运营机会,而不考虑其它线程的优先级,而yield()方法智慧给相同优先级或更高优先级的线程运营机会。B、 当线程执行sleep()方法会转到阻塞状态,而执行yield()方法会转到可运营状态(就绪状态)C、 Sleep()声明会抛出异常,而yield()方法不会D、 Sleep()比yield()方法具有更好的移植性,由于yield()方法的实现依赖于底层操作系
44、统对线程的调度策略。5、 线程同步(Thread Synchronization)通过synchronized关键字实现。线程同步的特点:a、一把锁可以锁住多个同步代码块; b、锁对非同步代码块无效; c、当一个线程进入同步代码块,并不意味着指定代码必须不以中断的方式运营; d、当一个线程占有了某个对象的锁,其它需要获得这个锁的线程就进入到锁池中,等待获得锁的机会。6、线程的通信:wait()和notify()/notifyAll()7、死锁:当一个线程等待由另一个线程持有的锁,而后者正在等待已被第一个线程持有的锁时,就会发生死锁(必须手动结束)。46I/O 基本读写文本文献操作FileInp
45、utStream和FileoutStreampublic void read()FileInputStream in;try in = new FileInputStream(E:ss.txt);int data;while(data = in.read() != -1)System.out.println(data + abc); catch (FileNotFoundException e) e.printStackTrace(); catch (IOException e) e.printStackTrace();public void write()try FileOutputStream fo = new FileOutputStream(e:asd.txt);fo.write(你好.getBytes();fo.close(); catch (FileNotFoundException)e.printStackTrace(); catch (IOException e) e.printStackTrace();字节流:InputStream、OutputStream字符流:Reader、Writer通过Inp