分享

三种获取类的方法:1)class.forName(); 2)类名.class; 3)实例.getClass()。

 金银宝100 2018-01-07
treeset的实现原理
集合的体系以及各子类的特点,多线程的两种创建方式,7k中用到的多线程的创建方式(Executors)什么是反射,字节码的三种获取方式,动态代理,单例的饿汉式和懒汉式,synchronized在单例中哪里用到了,什么是同步,为什么需要用同步,sleep和notify的区别.



多态的理解
   if 和  switch  怎么用
   重载和重写怎么区分
   JDK1.5新特性,可变参数带来什么好处,什么是自动装箱拆箱?
   线程间怎么通信?线程池的理解?后面这个我不懂直接说7K里面那两个
   多线程的两种创建方式
   同步是什么?同步方式?什么是死锁
   都学到了哪些设计模式,我说单例,装饰、享元,工厂,要说怎么理解装饰?
   集合框架的理解
   IO流的都有哪些
   反射是什么?怎么用
   动态代理的理解
  编程  
1.map集合添加元素,遍历,然后实现替换其中某个元素(紧张得把map的泛型写成collection的单列),替换了老半天,不懂怎么把键和值都替换,其实只能替换值,我又在那死脑筋,老师又叫我写个单列的替换,这题马虎算过
2.拷贝多级文件夹,第一题卡好久这题都没想就打印文件和文件夹,题意是想要文件夹名称,然后存进文本里,咦这题没过。(50分钟结束)


1.面向对象的理解。
2.面向对象与面向过程的区别。
3.abstract与哪些关键字不能共存,并且说明原因。
4.static,final修饰成员(变量,函数)的特点。
5.类与类,类与接口,接口与接口的关系。
6.final,finally,finalize的区别。
7.什么是多态,多态的好处和弊端。
8.wait()和sleep()的区别。
9.网络编程的三要素。
10.TCP和UDP的区别。
11.什么是暴力反射。


  ①函数的重载:传入不同的参数执行不同的操作。
        ②排序的方式:怎么也得记住一种的。
        ③对字符串的操作要熟练:lastIndexOf(),contains(CharSequence s),StringBuffer的reverse()等等吧。
        ④递归!在一面中我做的用递归的那道题有点难,,,当时没想出来,,回来百度看了些才会的。
        ⑤多线程的两种实现方方式,线程间的通信。
        ⑥对集合的基本操作(重点记常用的ArrayList和TreeMap):添加,删除,遍历等。
        ⑦IO部分:通过指定的目录获取满足条件的文件(字符流文件或字节流)并且高效的复制放入指定的目录。也就是要熟悉流的操作规律。
        ⑧单例设计模式的两种实现。


1,说一下堆和栈的区别?
        栈的内存空间是由系统自动分配的。例如int a;系统就自动在栈里开辟个空间给a使用。
        它存取速度比堆要快,而且栈里面的数据可以共享,存放的数据是一些基本类型的数据,特点是存放在栈里的数据被调用完立马消失。
        堆的内存空间是由程序员自己申请(new)出来的。
        堆内存主要用来存储引用类型,特点是堆里面的数据被调用完毕后不会马上消失,而是在某个不确定的时间后被垃圾回收器清理掉。
2,TreeSet的排序方式有几种,详细描述?
        A.自然顺序
                让对象所属的类去实现comparable接口,然后重写这个接口的comparto方法进行比较,根据这个比较的结果去进行排序。
        B.比较器接口,comparator接口
                在创建对象时使用带参构造传一个实现比较器接口的匿名内部类并重写它的方法就可以进行比较了。
3,线程生命周期,是怎么样的?
        新建,就绪,运行,堵塞,死亡
        新建是创建线程。
        就绪是获得执行资格但是没有执行权。
        运行不解释。
        堵塞,就是当线程运行到符合某个我们定义的条件时,它会停止下来等待唤醒
        死亡就是线程结束了。
4,线程死锁是什么,为什么有死锁,怎么解决死锁?
         为了解决程序因占用资源,出现资源争抢,而出现的程序进入等待的状态(死锁)。
        举例:有A和B两个线程,有CD 两把锁, A和B嵌套CD锁,A线程中有C,D锁,B线程中有D C两把锁,当两个线程运行时,就可能会出现死锁导致
程序停滞的情况。
        怎么解决:真正意义上来说,死锁是不能被解决的,死锁是多线程中的一个需要避免的重大的问题,当我们在编写程序时,可以给共享的资源加上另外一
个把锁,控制资源的动态,同时可以设置线程的优先级使线程之间协调合理的利用CPU的时间。
5,类和对象是什么?
        类是对某种事物的抽象统称,例如学生,是一个群体,他们有着共同的特征。
        对象是类的实例,例如说在学生这个类里面有一个叫做小明的学生,他有着具体的特点,这个时候就把他叫做是这个学生类的对象。
6,集合包括哪些类?
        list--|ArrayList
                |Vector
                |LinkedList
        Set -| TreeSet
                 | HashSet
        Map -  |HashMap
                |Hashtable
                |Properties
                |TreeMap
7,java有多继承吗?
        有,接口可以多继承,因为接口只是一个功能的拓展,他多继承只是让本身具备更多的功能而已,而多继承之所以会出错的原因,比如说一个普
通类继承了多个类的时候,如果这多个类有些相同的方法时,这个类就不知道要去继承哪一个类的方法。而接口就没有这种错误,因为如果接口去继承其
他多个接口的话,哪怕其他接口有一些相同的方法,又因为接口中的方法都是抽象的没有方法体,所以在继承时也只会保留下来一个。
8、你是怎么理解面向对象的
        他有3个特点:更符合思考习惯,让程序员从执行者变成指挥者,把复杂的事情简单化。
        我是这样理解的,比如说我要得到某种结果或者完成某件事情的时候,我并不需要自己亲自的完成这一系列的过程,只需要找到能够帮助我完成
需求的工具就可以很高效的达成目标了,我觉得这个过程就叫面向对象。
9、接口跟抽象类的区别
        成员特点        抽象类中可以有成员变量跟成员常量,有构造方法,除了抽象方法外也可以有非抽象方法。
                        接口中只有常量,默认修饰符是public static final,接口中只有抽象方法默认修饰符是public abstract。
        关系特点  类跟类之间只能单继承跟多重继承。
                        类跟接口可以单实现、多实现,也可以在继承一个类的时候再实现一个或者多个接口。
                         接口跟接口可以单继承也可以多继承。        
        设计理念   继承体现的关系是is a  代表子类就是父类的一个延伸,就是说有地方用到父类的时候完全可以用子类替代。
                        接口体现的关系是like a  它定义的是整个体系的扩展内容。
10、说说你对异常的理解
        异常就是在程序编译或者运行的时候会出现的一些错误,比如说我要往一个指定的文件写入数据,但是这个时候虚拟机又不敢确定在硬盘里有没
有这个文件,所以为了避免发生错误,就需要我们来指定当出现这种情况时虚拟机要做出什么动作。例如抛出异常让虚拟机处理,或者我们用try、catch
处理。
11、list跟set的区别
        list是元素有序,并且可重复的。
                这个有序说的是存放数据时的顺序是怎么样的那我们将来取出元素调用的时候就是怎么样的,而且多个相同的元素并不会影响储存。
        set是元素无序,并且唯一的。
                无序说的是我们在取出元素时不是按照我们当初存的顺序出来的,比如说我打印这些元素会发现每次打印,元素的位置都不一样。
                但是通过实现comparable或者实现comparator接口也可以给元素排序。
12、基本的io流有哪些
        字符流两种:FileWriter、FileReader        
        字节流两种:FileOutputStream、FileInputStream
        高效字符流两种:BufferedWriter、BufferedReader
        高效字节流两种:BufferedOutputStream、BufferedInputStream
        打印流:printWriter、printReader
        转换流:InputStreamReader、OutputStreamWriter
        标准输入输出流:System.in、System.out
        序列化流:ObjectInputStream、ObjectOutputStream
13、反射是什么?反射获取字节码文件的三种方式?反射的好处?
        在运行状态下,通过class文件对象(Class的对象),去使用构造方法,成员变量,成员方法。就是反射。
        3种方法:
                A.用Object类的getClass方法得到。
                B.用任意数据类型的静态class属性可以得到
                C.用Class类的静态方法forName(String className)方法得到
        好处:只要有一个类或者一个类的对象,就可以得到这个类或对象的所有属性和方法。包括私有的。
14、单例的两种模式
        (这个我还没有透彻理解所以只给模式名)
        饿汉式
        懒汉式
16、内部类
        (这个也是了解不深)
        成员内部类,他是在class中又直接定义一个class
        局部内部类,在方法中定义一个class
        匿名内部类,他是没有名字的内部类,我用的最多的地方是在创建对象要带参的时候用到他。他是一次性的用完就不能用了。
17、map的特点,怎样获取键值
        把数据按照键跟值的特点存储在集合里,使用的时候可以通过键得到值,键是唯一的,值却可以重复。
        有个方法keySet可以得到集合里的键,有了键再遍历就可以获取值。
18、static的作用?
        1.被static修饰的成员是被所有对象共享的。
        2.随着类的加载而加载。
        3.优先于对象存在。
        4.可以直接被类名调用。
19、接口和抽象类的区别
        1.接口里面都是抽象方法,只有常量;抽象类里面不一定都是抽象方法,可以有成员变量也可以有常量
        2.接口是功能的扩展;而抽象类是抽取子类的共性功能,强制子类必须按照抽象类方法重写。
20、ArrayLIst和LinkedList的区别?为什么ArrayList查询快
        ArrayList底层是数组结构,特点是查询快增删慢;LinkedList底层是链表结构,特点是增删块查询慢。
        因为ArrayList底层是数组结构,通过数组的索引值我们就可以做到快速查询!
22、字节流和字符流的区别
        字符流的底层是字节流,最早的时候只有字节流,后来为了能够支持文字所以开发出了字符流,字符流能更高效的处理文本数据;
        同时如果要处理的是文本数据的话就可以用字符流,但如果要处理多媒体文件的时候就只能使用字节流。
        因为java使用的编码是unicode编码,一个字符等于两个字节。
23、多线程的两种实现方式,它们有什么区别
        两种,
        1.对象对应的类继承Thread类,这种可以直接调用start方法开启多线程。
        2.对象对应的类实现Runnable接口,这种要重新new一个Thread对象把对象作为参数传进去才能调用start方法。
        开发一般用第二种,他避免单继承的局限性。实现资源与线程的分离

24、对网络通信协议的理解
        (忘了)
25、线程开启调用什么方法
        如果对象对应的类继承的是Thread类的话那么用对象调用start方法就可以开启线程;
        如果对象对应的类是实现Runnable接口的话,就必须把这个对象转化成Thread类再调用start方法。转换方式就是new一个Thread对象并把实现Runnable接口的类的对象作为参数传进去就可以了。

编程题:
        1.复制某盘下所有(包括子目录)“.java”后缀的文件到另一目录下。
        2.把D盘下的所有.java文件改成.txt后缀并复制到另一个目录下,或者把绝对路径储存在.txt文档里
        3.定义一个学生类,属性有名字,语文分数,数学分数,英语分数。键盘录入5个学生跟分数,按照总分先排序再写进txt文档,要求在文档里要清晰明了查看这些数据。






面试的时候都考哪些知识?是否还要做题?


A:面试的时候问的都是你在基础班学习或是自学的基础知识。其中“io流、反射、多线程、集合框架”是必问的。之后还会在说一说其他的基础。像、接口、抽象类、设计模式等。


面试的时候是会做两个编程题,难易程度同基础测试。时间为30分钟左右。







AVA相关基础知识
1、面向对象的特征有哪些方面 
1.抽象:
抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。
2.继承:
继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。
3.封装:
封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。
4. 多态性:
多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。
2、String是最基本的数据类型吗?
基本数据类型包括byte、int、char、long、float、double、boolean和short。
java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类
3、int 和 Integer 有什么区别
Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。
原始类型封装类
booleanBoolean
charCharacter
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。
4、String 和StringBuffer的区别
JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。
5、运行时异常与一般异常有何异同?
异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。
6、说出Servlet的生命周期,并说出Servlet和CGI的区别。
Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。
与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。
7、说出ArrayList,Vector, LinkedList的存储性能和特性
ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。
8、EJB是基于哪些技术实现的?并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。
EJB包括Session Bean、Entity Bean、Message Driven Bean,基于JNDI、RMI、JAT等技术实现。
SessionBean在J2EE应用程序中被用来完成一些服务器端的业务操作,例如访问数据库、调用其他EJB组件。EntityBean被用来代表应用系统中用到的数据。
对于客户机,SessionBean是一种非持久性对象,它实现某些在服务器上运行的业务逻辑。
对于客户机,EntityBean是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序实现的实体。
Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean都可以将系统逻辑放在 method之中执行,不同的是 StatefulSession Bean 可以记录呼叫者的状态,因此通常来说,一个使用者会有一个相对应的 Stateful Session Bean 的实体。StatelessSession Bean 虽然也是逻辑组件,但是他却不负责记录使用者状态,也就是说当使用者呼叫 Stateless Session Bean 的时候,EJB Container并不会找寻特定的 Stateless Session Bean 的实体来执行这个 method。换言之,很可能数个使用者在执行某个 Stateless Session Bean 的 methods 时,会是同一个 Bean 的 Instance 在执行。从内存方面来看,Stateful Session Bean 与 Stateless Session Bean 比较, Stateful Session Bean 会消耗 J2EE Server 较多的内存,然而 StatefulSession Bean 的优势却在于他可以维持使用者的状态。
9、Collection 和 Collections的区别。 
  Collection是集合类的上级接口,继承与他的接口主要有Set 和List.
Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。
10、&和&&的区别。 
&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。
11、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引进的Map interface的一个实现。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步(如果是ArrayList:List lst = Collections.synchronizedList(newArrayList());如果是HashMap:Map map = Collections.synchronizedMap(new HashMap());)。
Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。
12、final, finally, finalize的区别。 
  final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
finally是异常处理语句结构的一部分,表示总是执行。
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。
13、sleep() 和 wait() 有什么区别? 
sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。
wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。









请介绍一下集合框架
请介绍一下IO
请说一下进程和线程的区别
需要注意的是,每问一个大块的知识点,老师会追问(要命....)
拿集合举例,先问了**(屏蔽)**,然后我的**(屏蔽)**可能没说的很清楚,然后老师就问我,**(屏蔽)**...
然后让介绍了IO,然后问我**(屏蔽)**(我回答read和readLine)
然后问我**(屏蔽)**......(最后失败的原因之二.....)





设计一个方法,用于获取一个字符串中指定子串出现的次数。这道题的思路是怎样的?


会让你写两道编程题的,难度用基础测试相当。时间在40分钟左右。提问的技术点的话:io流、反射、多线程、集合框架。这个四个点必问。剩下的就是一些基础的知识,像接口、抽象类、内部类、静态方法等


final,finally,finalize的区别
final:修饰类的时候,类不能被继承修饰方法的时候方法不能被重写
修饰变量的时候变量是常量,只能被赋值一次
finally是try……catch的一部分,它后面的东西一定会执行,但是有种特殊情况就是它前面有system.exit(0)的时候就不会执行finally后面的语句
finalize是java中的垃圾回收器



1.java中的main方法是静态方法,即方法中的代码是存储在静态存储区的。

2.任何静态代码块都会在main方法之前执行。

3.java程序的初始化顺序:原则:静态优先于非静态,且只初始化一次;父类优先于子类;按照成员定义顺序初始化。
例顺序:父类静态变量,父类静态代码块,子类静态变量,子类静态代码块,父类非静态变量,父类非静态代码块,父类构造函数,子类非静态变量,子类非静态代码块,子类构造函数。

4.java中一个文件可以定义多个类,但只能有一个类被public修饰,且访问的类名与文件名必须相同,每一个类都会生成一个字节码文件。

5.构造函数的特点:1)名字必须与类名相同;2)构造函数不能被继承,不能被覆盖,但是可以被重载;3)子类可以通过super关键字来显示的调用父类的构造函数,但当父类没有提供无参的构造函数时,子类的构造函数必须显示的调用父类的构造函数。

6.java中的接口常量默认使用public static final修饰。

7.java在处理基本数据类型时,都是按照值传递,其他的都是按照引用传递。

8.clone方法,深复制和浅复制的区别:深复制把复制的对象所引用的对象都复制了一遍;浅赋值仅仅赋值所考虑的对象,不复制他所引用的对象。

9.三种获取类的方法:1)class.forName(); 2)类名.class; 3)实例.getClass()。

10.四种创建对象的方法:1)通过new实例化;2)通过反射机制;3)通过clone()创建;4)通过反序列化的方式创建对象。

11.当子类中定义的成员变量和父类中定义的成员变量相同时,子类成员变量会覆盖父类的成员变量,不会继承。

12.java提供两种用于多态的机制,编译时多态和运行时多态。编译时多态是通过方法重载实现的,运行时多态是通过方法覆盖实现的。

13.方法重载和方法覆盖:覆盖是子类和父类之间的关系,是垂直关系;重载是同一个类中方法之间的关系,是水平关系。覆盖要求参数列表相同,重载要求参数列表不同。

14.抽象类和接口的异同:1)abstract只能用来修饰类或者方法,不能用来修饰属性。2)抽象类表示的是一个实体,而接口表示的是一个概念。
3)只要包含一个抽象方法的类就必须被声明为抽象类 4)子类为父类中的所有抽象方法提供具体的实现,否则他们也是抽象类。
相同点:1)接口和抽象类都不能被实例化 2)接口的实现类或者抽象类的子类只有实现了他们之中的抽象方法后才能被实例化。

不同点:1)接口只有定义,其方法不能再接口中实现,只有实现接口的类才能实现接口中定义的方法,而抽象类可以有定义与实现,即方法可以在抽象类中被实现
2)接口需要实现implements 但抽象类需要被继承extends,一个类可以实现多个接口,但是一个类智能继承一个抽象类。
3)接口强调特定功能的实现,设计理念为has-a;抽象类强调所属关系,其设计理念为is-a
4)接口中定义的成员变量默认为public static final,只能够有静态的不能被修改的数据成员,而且必须为其赋初值,所有成员方法必须是public和abstract的。
抽象类可以有自己的数据成员,也可以有费抽象的方法,成员默认为default的,也可以被定义为private,protected和public的。
当功能需要被积累时,使用抽象类,不需要积累时,使用接口。
5)接口被用于实现比较常用的功能,便于日后的维护或者添加删除方法,抽象类更倾向于充当公共类的角色。
接口可以继承接口,抽象类可以实现抽象类,抽象类也可以继承具体类,抽象类也可以有静态类的main方法。

15.内部类:主要分为四种 静态内部类 ;成员内部类 ;局部内部类 ;匿名内部类
1)静态内部类不能与外部类有相同的名字,不能访问外部类的普通成员变量,只能访问外部类中的静态成员和静态方法;非静态内部类不能有静态成员。
2)局部内部类像局部变量一样,不能被public protect private以及static修饰
3)匿名内部类是一种没有类名的内部类,不能使用关键字class extends implements 没有构造函数,他必须继承其他类或者实现其他接口。

16.this与super:this指针指向当前实例对象,super可以用来访问父类的方法或者成员变量。
17.当子类的构造函数需要调用父类的构造函数时super()必须为构造函数中的第一条语句。

18.final,finally,finalize区别:
final:1)final用于声明属性,方法,类,表示不可变属性,方法不可覆盖,类不可被继承。(不可变有两层含义:引用不可变;对象不可变。final指的是引用的不可变)
2)final类,该类不能被继承,所有的方法不能被重写,但是属性可变。一个类不能既被声明为abstract又被声明为final。
finally:作为异常处理的一部分,跟在try/catch后并且附带一个语句块,表示这段语句最终一定会被执行。
finalize:是object类的一个方法,在垃圾回收器执行时会调用被用于回收对象的finalize方法。

19.assert:作为一种软件调试方法,住要作用是对一个boolean表达式进行检查
与C语言中的assert异同:java是assert是关键字,C语言中使用的是库函数,assert是编译时开启,而java语言则是在运行时开启。

20.static关键字:主要作用:为某种特定的数据类型或者对象分配单一的存储空间;实现某个方法或属性与类而不是与对象关联在一起。
1)静态成员变量:静态成员变量属于类不属于某个对象,在内存中指有一个复制,另外,java中不能在成员函数内部定义静态变量。
2)静态成员方法:静态方法属于类不属于某个对象,静态方法中不能使用this和super关键字。static关键字一个很重要的用途就是用来实现单例模式。(单例模式:隐藏构造函数,提供一个静态创建对象的方法)
3)静态代码块:不在任何一个方法体内且只执行一次。

21.switch语句:支持int 或者int的包装类Integer ,一些能隐式转化成int类型的例如short byte 和 char 还有他们的包装类也支持。另外Java7中开始支持String类型。

22.volatile:是一个类型修饰符,他是被设计用来修饰不同线程访问和修改的变量。系统每次用到它的时候会从对应的内存当中提取。

23.instanceof:是java语言中的一个二元算符,他的作用是判断一个引用类型的变量所指向的对象是否是一个类的实例。

24.java中存在八种基本数据类型:byte short int long float double char boolean(需要注意java中默认声明的小数是double类型的,所以float a=1.1是不合法的)

25.不可变类:所有基本类型的包装类都是不可变类(引用不可变)。
创建一个不可变类五个原则:
1)类中所有成员变量被private所修饰。
2)类中没有写或者修改成员变量的方法,只提供构造函数一次生成。
3)确保类中的所有方法不会被子类覆盖(利用final达到目的)。
4)如果一个类成员不是不可变类,那么在成员初始化或者使用get方法获取该成员变量时,需要通过clone方法来确保类的不可变性。
5)如果有必要覆盖Object的equals和hashCode方法。

26.值传递和引用传递:1)在方法调用中,实参会把它的值传递给形参,形参知识用实参的值初始化一个临时的存储单元,形参虽然与实参有相同的值却有着不同的存储单元。
2) 原始数据类型在传递参数时都是按照值传递,而包装类型都是按照引用类型在传递。

27.不同数据类型的转换:
自动转化。
1)char类型会转换为高级类型,会专函为其对相应的asc码。
2)byte char short类型参与运算时会自动转换为int类型。但当使用+=时就不会产生类型转换。
3)基本数据类型和boolean类型时不能相互转化的。
当需要高级数据类型转化为低级数据类型时就需要进行强制类型转换。

28.round ceil floor方法:round方法表示四舍五入,ceil方法表示向上取整,floor方法表示向下取整。

29.i++表示先使用i在给i自增,++i表示先给i自增,在使用i。

30.>>与>>>:>>在执行右移操作时,若参与的数字为正数,则在高位补零,若为负数,则在高位补1。>>>则不同,无论运算的数字为正数或负数,在执行运算时都会在高位补0。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多