虽然以前也学过java,但这看完张老师讲的java基础前两部分后,仍从中发现了不少漏洞和掌握不全的地方,现整理如下:
1、Java虚拟机即Java字节码解释程序。只要操作系统上安装了相应的Java字节码解释程序,Java字节码文件就可以正确运行。即“一次编译,到处运行”。
2、通常说的Java有三个方面的内涵:是一种编程工具,是一套开发工具,是一个运行环境
3、什么是JDK:包括开发工具,Javac及基础核心类和运行环境。
4、j2sdk文件夹下bin中的Javac.exe是用于将Java源文件编译成Java字节码文件的编译工具。Java.exe用于将Java字节码文件解释执行的解释程序。(以上在windows系统下)。
5、在windows系统下查看环境变量的两种方法:一种是在命令行中键入set命令,另一种是常用的通过右击“我的电脑”来然后点“高级”来查看。
6、设置环境变量两种方法:a、在命令行中键入set空一格后,以:变量名=环境变量值的形式进行设置,但我们在命令行窗口中设置的环境变量,只对该命令行起作用。b、在环境变量窗口中进行设置,对以后的所有程序及命令行窗口都起作用,不会影响之前启动的程序及命令行窗口。另外,在用户环境变量中的设置,需在注销重新启动后才有效。
7、path环境变量的作用:当我们要执行某个命令时,操作系统会首先在当前目录下进行查找,若没有找到,操作系统会沿着path环境变量所指定的目录依次进行查找该命令文件,并以最先找到的为准。
当执行Java时常遇到的两个问题:1、Java不是可执行的程序2、在执行某个程序时提醒我们找不到某个文件第一个问题的原因:在当前目录及path环境变量所指定的目录下均找不到Java.exe这个可以执行的文件。第二个问题的原因:因为操作系统会沿着path环境变量所指定的目录依次进行查找该命令文件,并以最先找到的为准。当最先找到的Java命令文件(Java.exe)是有问题的时候,便出现了上面的第二个问题。
8、在命令行中键入:Java –verbose 来查看使用的那个jdk
9、与path环境变量的作用类似,classpath环境变量指出Java虚拟机查找class文件的路径。若我们设置了classpath环境变量,Java虚拟机便不再当前目录下查找class文件。但设置的classpath环境变量值后加上“;.”后便便可以在当前目录下查找class文件了,其中的“.”指代当前目录。此外设置的classpath环境变量值中不应含有空格及中文自符。
10、反编译程序:jad.exe,它是在命令行中工作的,首先达到jad程序所在的目录,然后键入:
jad –s java来设置输出文件为.java格式的。在其后,输入所要反编译的class文件的路径点回车,便可在jad程序所在目录下生成相应的Java文件。也可使用界面化的FrontEnd程序,进行反编译,它是依托于jad程序的。
11、一些常用的转义字符:
“/r”:代表接受键盘输入,相当于按下了回车键
“/n”:表示换行
“/t”:为制表符
“/b”:为退格键,相当于BackSpace
“/’”:为单引号
“/””:为双引号
“//”:是一个斜杠“/”
12、char类型占两个字节,数值为0-2^16-1
13、表达式的数据类型自动提生
若一个操作数是int型,所有的byte型、short型和char的值将提升到int型;
若一个操作数是long型,计算结果就是long型;
若一个操作数是float型,计算结果就是float型;
若一个操作数是double型,计算结果就是double型;
14、一个表达式中,若有字符串用加号(+)与其它类型的数据相加,结果就是该字符串与其他类型的数据相连,生成新的字符串。
例如:System.out.print(‘a’+1);打印结果为98,而System.out.print(“”+‘a’+1);打印结果为a1.
15、java不允许变量的嵌套定义,变量有自己的生命周期及作用域。
如 public classTestScope
{
public static void main(String args[])
{
int x=12;
{
int q=96; //x与q都可用
int x=3; //错误的定义,java中不允许有这种嵌套定义
……
}
q=x; //错误的行,只有x可用,q超出了作用的范围。
}
}
16、在使用浮点数时,因为浮点数有精度,不要用等号去确定某浮点数。一般要用大小号来判断。
17、使用new产生的数组和对象放在堆内存中,堆中有垃圾回收器,而相应的引用变量则放在栈中,引用变量不再被使用后会被释放,堆中的数组和对象再无引用变量指向时会变为垃圾,但此时仍占据着内存,然后在某一时刻被垃圾回收器回收释放。
18、声明(非定义)数组时不能指出数组的长度,否则会在编译时出差。
19、java中并没有真正的多维数组,只有数组的数组,即数组的每一元素也都指向一个数组,java中的多维数组不一定是规则的矩阵形式。例如可以这样定义:
int[][] xx=new int[3][];
xx[0]=new int[2];
xx[1]=new int[3];
int[2]=new int[1];
若要定义的二维数组是规则的矩形,则可在一句中定义:int[][] xx=new int[3][2];
20、常用的用于操作数组的两个函数:(Arrays类中)
public static void sort(byte[] a):将数组降序排序。
public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length):用于数组的拷贝。第一个参数指原数组;第二个参数指原数组中要拷贝的起始位;第三个参数指目标数组;第四个参数指拷贝到目标数组的起始位;最后一个参数指拷贝长度。