java基础知识注意点收录
1.使用path设置路径时,为避免由于虚拟机存放位置的不同而改变设置路径时造成意外的其他错误,使用变量JAVA_HOME记住虚拟机的位置,然后在path中通过%JAVA_HOME%动态获取虚拟机的存放位置,以后要改就改JAVA_HOME的值,这样就能减少出错。2.如果在classpath路径和当前路径下都有相同名称的class文件,虚拟机先找classpath下的那个文件。3.classpath设置路径结尾处如果加“;”表示虚拟机会先在classpath路径下找要运行的文件,如果没找到会去当前路径下找;而不加“;”,虚拟机就只在classpath路径下找,如果没有要运行的那个文件就会出异常。设置多路径可以这样:set classpath=.;c\;d\其中“.”表示当前。4.java文件在编译时,虚拟机会先在当前路径下找该文件,如果没找到再去path路径下去找。5.两个整数相%,如果有一个数是负数,要判断它是否是被%数,如果是则结果是负数,如果不是被%数,则结果还是正的。5.short s=3; s=s+5;这句话与s+=5;有什么区别呢?答:前边一种编译失败,后边一种编译通过。 a.前边这种做了两个动作,首先将short类型的s提升为int类型算出与5的和;其次,将运算完的结果int类 型的值赋给short类型的s,它装不下,编译会报错。 b.后边一种,只做了一件事,就是赋值动作,因为+=运算符在给s赋值时,自动完成了强转动作。6.>>:最高位补什么由原数据的最高位决定,是1就补1,是0就补0; >>>:无论原数据的最高位是什么,>>>后的数据最高位都用0补齐。7.数字&运算,只有对应的位同为1才得1; 数字|运算,对应位只要有一个1就得1; 数字^运算,对应位不一样就得1。8.一个数异或同一个数两次,还得那个数。9.交换两个数的三种方法举例如下: a.借助第三方变量(开发最常用方法) int temp=m; m=n; n=temp; b.不借助第三方变量(容易超出范围) n=m+n;(当a,b都很大时,容易超出数据类型范围) m=n-m; n=n-m; c.使用第8条(技巧方法-不容易想到) n=n^m; m=n^m; n=n^m;10.三元运算符 好处:可以简化if else代码。格式:变量=(条件表达式)? 表达式1:表达式2; 弊端:因为它是一个运算符,运算完必须有结果。11.for(初始化表达式;循环条件表达式;循环后的操作表达式) { 执行方法体; } 注意a.初始表达式只要是合法表达式就行,不需要都得是int x=0之类的,甚至可以是打印语句, 循环后的操作表达式同上,但须明白for语句执行顺序; b.循环条件表达式必须有真假结果,即能判断出true或者false; c.表达式都可以有多个,需要“,”隔开。 d.初始表达式和循环后操作表达式都可以不写,但一般不会这样做。 补:无限循环最简单表现形式(面试) a.for(;;){}其中循环条件表达式不写,默认为true; b.while(true){}12.打印*型图形小技巧:尖朝上,内层循环条件随着外层变;尖朝下,内层初始条件随着外层变。13.是否重载看参数列表,即看列表中参数个数或参数类型有无不同,与返回类型无关。14.堆内存的三个特点:内存地址值,默认初始化值,垃圾回收机制。15.当成员变量和局部变量就有相同的名称时,直接使用该名称时,虚拟机会先在局部找,局部有就不去找成员, 当出现两次该名称,都是指局部的那个,为了同时使用这俩变量,使用this关键字。16.当初始化动作中还有初始化动作时,先执行更细节的初始化,再执行自己的初始化,所以this语句必须放在 构造函数的第一行。17.wait(),和sleep()区别: wait 释放资源,释放锁 sleep 释放资源,不释放锁。18.io流中操作规律(三个明确): a.明确一:源(输入流):Reader,InputStream 目的(输出流):Writer,OutputStream b.明确二:明确要操作的数据是否是纯文本 是,使用字符流 否,使用字节流 c.明确三:当体系明确后,再明确使用哪个具体的对象,通过设备来区分 源设备:硬盘,内存,键盘(System.in) 目的设备:硬盘,内存,控制台(System.out) 注意:如需提高效率可以使用缓冲技术,如想操作方便也可使用转换流。19.System中有两个方法可以用于设置源和目的。 System.setIn(new FileInputStream("xxx"));//设置源 System.setOut(new PrintStream("xxx.txt"));//设置目的 另外,Properties中有个list方法,同样可以设置输出: Properties prop=System.getProperties(); prop.list(System.out);或者prop.list(new PrintStream("xxx"));