您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 招聘面试 > JAVA-基础知识复习笔记
须知与说明:1、该文档资料,均来源于网络,具有一定的参照价值;2、该文档资料,便于学员把握复习要点、掌握提醒思路等;3、该文档资料,并不代表真实题库及试题内容;4、内部资料,请勿外传;1.如果你用public关键字在一个文件中定义了超过一个非内部类,编译器将会报错。2.protected修饰符的访问权限:能修饰属性、方法和构造函数。同一个包内部可见。与基类不在同一个包中的子类,只能访问自身从基类继承而来的受保护成员,而不能访问基类实例本身的受保护成员。保护成员对除了子类外的所有类实际上都是包级访问或默认访问。对于包外子类,只能通过继承访问收保护成员。3.通过参数的顺序和类型来区分两个重载的方法。返回类型对区分方法没有帮助。你可以在一个子类中重载一个方法,所需要的就是新方法有不同的参数顺序和类型。参数的名字或者返回类型都不作考虑。,重写后的方法必须跟基类中被取代的原始方法有完全相同的签名。这就包括了返回值。static方法不能被重写。4.default语句不是必须在case语句的结尾处出现。switch语句的参数必须是一个byte,char,short或int类型的变量。5.。if表达式的要求是必须返回一个boolean类型,因为(b=false)返回一个boolean类型,所以被接受(如果无用处).6.for中定义的变量对for循环外部来说永远是不可见的。7.在子类中一个重写的方法可能只抛出父类中声明过的异常或者异常的子类,或者不抛出异常。这只适用于方法重写而不适用于方法重载。子类重写方法的修饰符不能低于父类方法的修饰符。8.一个类的构造方法无论是什么修饰符去修饰,它main方法中都可以去实例化这个类。但其他类要实例化这个类就和构造方法的修饰符有关了。一下代码可以通过编译:importjava.io.*;classBase{publicstaticvoidamethod()throwsFileNotFoundException{}}46publicclassExcepDemoextendsBase{publicstaticvoidmain(Stringargv[]){ExcepDemoe=newExcepDemo();}publicstaticvoidamethod(inti)throwsIOException{}privateExcepDemo(){try{DataInputStreamdin=newDataInputStream(System.in);System.out.println(Pausing);din.readChar();System.out.println(Continuing);this.amethod();}catch(IOExceptionioe){}}}9.System.gc()来建议垃圾回收器收集垃圾,但是这并不能保证执行。当代码已经无法再访问对象的时候,这个对象就成为了可垃圾回收的。有两种情况下会出现对象无法再被访问,第一,对象的引用设置为null;第二,指向这个对象的引用指向了其他的对象。10.使用引入子句对性能没有影响。这类似于在DOS(或Unix)环境中设定一个路径声明。这只是简单的为类设定有效性或路径,并不是直接将代码引入程序中。仅仅在程序中实际地使用类才会影响性能。11.定义在方法中的类只能看到来自嵌套方法中的final域。但是它可以看到嵌套类中包括私有域在内的域。12.类构造函数的执行顺序:由此不难看出java类初始化时构造函数调用顺序:(1)初始化对象的存储空间为零或null值;(2)按顺序分别调用父类成员变量和实例成员变量的初始化表达式;(3)调用父类构造函数;(如果使用super()方法指定具体的某个父类构造函数则使用指定的那个父类构造函数)(4)按顺序分别调用类成员变量和实例成员变量的初始化表达式;(5)调用类本身构造函数。13.java中的关键字:14.,类级别的变量总是会被赋予一个缺省值,而一个成员变量(包含在方法中)将不会被赋予任何缺省值。15.任何基本类型的数组元素的值将总是被初始化为缺省值,无论数组是否被定义。无论数组定义为类级别还是方法级别,元素值都会被设定为缺省值.16.java三种进制的表示:三种方式以及字母是非大小写敏感的要更容易一点。17.一个具有小数部分的数据的缺省类型是double而不是float。18.char是Java中唯一的未赋值的原始数据类型,它是16位长的。19.对于基本类型的包装类可以直接赋值。20.只有+运算符可以对字符串进行重载,如果你对字符串使用除号和减号(/-),你会得到一个错误。21.332的值是3,也就是说3被移动了0位。22.参数传递:基本类型是值传递。引用类型是地址传递,可以改变其内容。23.运算优先级:单操作数运算符算数运算符移位运算符比较运算符按位运算符符逻辑运算符条件运算符赋值运算符.24.二进制负数转成整数规则:-1(减1)取反(~)添上符号(-)25.负整数转成二进制规则:取模取反(~)+1(加1)26.带符号移位运算:左移:相当于*2右移:相当于/227.逻辑运算符(&&、||)如果你理解AND,你就会理解Java的方法,如果第一个操作数为假,第二个操作数的值就没有作用了,所有的结构都为假。对于逻辑OR也是,如果第一个操作数为真,所有的计算结果将为真,因为只要一个操作数为真最后的结果就为真28.按位运算符符可以对boolean进行操作.29.按位运算优先级顺序:&^|.方法:只有当两个变量相同位置上的位都是1时,&运算符才将结果位设置为1;只要有一个变量的位是1,|运算符就将结果位设置为1;仅当只有其中一个变量的位是1时,^运算符才将结果位设置为1.30.final常量在使用前必须被初始化,否则会产生编译错误。31.static关键字不能修饰顶层类。方法中的局部变量不能使用static来修饰。32.transient关键字只能用于修饰变量,而不能修饰类和方法。注意:本地变量是不能被transient关键字修饰的。33.synchronized关键字不能修饰构造函数。34.单操作数运算符在进行算数时的基本数据类型转换规则如下:1).当运算符为取正运算符(+)、取负运算符(-)、或按位取反运算符(~)时,如果操作数为字节型(byte)、短整型(short)、或字符型(char)、则先被转换为整型(int),再参与算术运算。2).当运算符为自动递增运算符(++)或自动递减运算符(--)时,如果如果操作数为字节型(byte)、短整型(short)、或字符型(char)、则不用先被转换成整型(int),而是直接参与算数运算,且运算结果类型也不变。3).如果操作数为整型(int)或长整型(long),则无论运算符为何种单操作数运算,均不发生类型转换,直接参与算术运算,且运算结果类型不变。双操作数运算符在进行算数时的基本数据类型转换规则如下:1).如果操作数之一为双精度型(double),则另一个操作数先被转换为双精度型(dounle),再参与算术运算。2).如果两个操作数均不为双精度(double),当操作数之一为单精度型(float),则另一个操作数先转换为单精度(float),再参与算术运算。3).如果两个操作数均不为双精度(double)或者单精度型(float),当操作数之一为单长整型(long),则另一个操作数先转换为长整型(long),再参与算术运算。4).如果两个操作数均不为双精度(double)、单精度型(float)或者长整型(long),则两个个操作数先转换为整型(int),再参与算术运算。5).如果采用+=、*=等缩略形式的运算符,系统会自动强制将运算结果转换成目标变量的类型。35.数组实现了Cloneable接口,继承了Object类。36.只有执行System.exit()方法或出现error错误时,finally语句块才不会获得执行而退出程序。37.在使用try,catch块时,如果try中没有响应的异常产生,则catch中不能有这种异常。否则编译错误。但exception、throwable可以出现。运行时异常也可以,如NullPointException.38.注意到在用实现Runnble接口的方法来创建线程时,必须要求创建一个Thread对象的实例,并且必须要在创建的时候,把实现该Runnable接口的对象作为构造方法的参数传递进去。39.关键字synchronized可以用在标记一段声明或者锁定一段代码,请注意的是这里的锁是基于对象而不是基于方法的。40.wait和notify应该放在Synchronized关键字标记的代码中以保证当前的代码在监视器的监控之中。41.线程调度不是独立的,不能依靠虚拟机让它用同一种方式运行。42.ceil方法:这个方法返回的是比被操作数大的最小double值。比如下面这个例子:ceil(1.1)它将返回2.0如果你换成ceil(-1.1)它将返回-1.0;43.floor方法:返回最大的(最接近正无穷大)double值,该值小于或等于参数,并且等于某个整数。如果觉得这表达的不够清楚,那么我们可以看一下,下面那一小段代码和它的输出情况:publicclassMyMat{publicstaticvoidmain(String[]argv){System.out.println(Math.floor(-99.1));System.out.println(Math.floor(-99));System.out.println(Math.floor(99));System.out.println(Math.floor(-.01));System.out.println(Math.floor(0.1));}}它的输出是:-100.0-99.099.0-1.00.044.不像一些随机数系统,Java似乎并不支持提供种子数来增加随机性。45.round方法:返回最接近参数的一个整型数。如果小数部分大于0.5则返回下一个相对最小整数,如果小数部分小于等于0.5则返回上一个相对最大整数。如下例所示:2.0=x2.5.thenMath.round(x)==2.02.5=x3.0theMath.round(x)==3.0以下是一些例子和它们的输出:System.out.println(Math.round(1.01));System.out.println(Math.round(-2.1));System.out.println(Math.round(20));1-22046.sincostan方法:这三个方便快捷的方法都只需要一个double型的参数,它们的功能和其他语言里面的方法功能是一样的47.Set任何一个传递给add方法的对象必须实现equals方法,这样保证与已存数据进行对比。如果已经存在该数据,那么调用add方法不会对该set起任何影响并且返回false。48.接口可以是默认的访问修饰符。49.抽象类的第一个具体子类必须实现超类的所有抽象方法。一个方法永远不能同事标识为abstract和final,或者同时标识为abstract和private,也不能与static修饰符组合使用。50.static不能修饰类。51.从java5起,只要新的返回类型是被重写的(超类)方法所声明的返回类型的子类型,就允许更改重写方法中的返回类型。52.只能将静态变量和方法作为调用super()或this()的一部分进行访问。例如super(Animal.NAME);不能用非静态属性.53.一个类的构造方法是私有的时候,这个类的main方法是可以访问的.在main方法中可以直接new一个类的实例.54.以下赋值是非法的:Intx=25,36;Chare=-29;Chare=70000;以下赋值是合法的:Intx,y=1;Chare=(char)-29;Chare=(char)70000;55.以下声明二维数组是合法的。Int[][]
本文标题:JAVA-基础知识复习笔记
链接地址:https://www.777doc.com/doc-5217825 .html