由于Java基础部分,尤其是前半部分内容比较简单,在此笔者在前面几篇博文中只会提及易错易漏的知识点。
本篇博文涉及以下几个知识点。
1. 更进一步了解JDK与JRE的关系和区别。
2. Java跨平台特性的初步了解。
3. 用记事本开发java程序时应注意点。
4. 为什么要配置Windows的PATH环境变量,以及好处
5. 输出语句输出字符串常量以外的其他常量类型。
6. Java数据类型易错点。
7. Java算术运算符易错点。
8. Java赋值(类似于+=,*=)运算符自动强制类型装换。
9. 逻辑运算符&,|与&&,||区别
10. break跳出外层循环
下面进行详细讲解
JDK(Java开发工具包)是Java开发运行环境,就像人类需要基本的生存环境一般,程序员在电脑上开发Java当然要安装JDK。JRE(Java运行环境)Java程序运行的保障,JRE包含在JDK中(安装了JDK也就安装了JRE),但如果你只需要运行Java程序而不用开发,那么你就可以只安装JRE(用户)。
a. 平台指的是操作系统(Windows,Linux,Mac)。
b. 实现跨平台依赖于Java的虚拟机JVM(存在于JRE中)
通俗的来说Java的跨平台特新就是指java程序只需要一次编译成class文件,就可实现跨平台执行。实际上就是不同系统的JVM把class文件都解释成相同的意思,实现了跨平台。可C程序针对不同的平台会用不同的编译器来编译和链接同样的源代码,所以C在不同系统的运行实际上运行的是不同的程序,虽然它们的源码是相同的,java就不同了,它只编译一次,就可以跨平台了。
现在许多初学Java的同学经常会选择使用一本IDE(eclipse之类)入门的书籍来进行学习Java,虽然IDE的功能很强大,但是不管是出于兴趣还是出于职业,我们还是尽可能的了解软件开发的全部步骤。
a. 类名必须与文件名相同。
b. 编译器为javac.exe,解释器为Java.exe都在JDK的bin目录下,二者都无法双击运行,要通过DOS命令来执行
c.在运行字节码文件时不能给出.class.
每次程序的编译与运行都要输入许多的地址才能完成开发,但是通过配置Windows的PATH环境变量可以简化这一操作。原理:PATH变量中保存着多个路径,当我们在DOS控制台中只给出程序名称时,Windows系统会到PATH变量保存的路径中查找程序。
一般情况下初学者通常会把输出语句记得十分牢靠。一般为一下两种
,但其实输出语句还可以输出其他类型的常量
package review;
public class review {
public static void main(String[] args) {
int a=9;
//大家所熟知的两种输出方法
System.out.println(a);
System.out.println(9);
//输出其他常量
System.out.println('1');
System.out.println(123);
}
}
6. Java数据类型易错点
a.Java的基本数据类型一共为4类8种,其中初学者一般遗忘byte类型(整型,1个字节,
-128~127)
b.字符型占2个字节(与C语言不同)
c.各种基本数据类型按照范围从小到大的排序(long并不是最大)
byte>short>int>long>float>double
d.布尔类型不能参与类型转换
7. Java算术运算符易错点
a.除法当两边为整数是结果一定位整数 例如1/2=0。
b.小数取余无意义,结果符号与被取余符号相同。
8. Java赋值(类似于+=,*=)运算符自动强制类型装换。
诸如+=,*=这样的赋值运算符,会将结果自动转换为等号左边的数据类型
package review;
public class review {
public static void main(String[] args) {
int c=0;
double b=3.2;
c=c+b;//无法自动转化报错
c+=b;//相当于c=(int)(c+b);
System.out.println(c);
}
}
&&和||存在短路现象,A&&B当A为false时不在执行B,A||B当A为true时不在执行B。
package review;
public class review {
public static void main(String[] args) {
int x = 1,y = 1;
if(x++==2 & ++y==2)
{
x =7;
}
System.out.println("x="+x+",y="+y);
//x=2 y=2(不存在短路现象,x++==2 与 ++y==2都要执行)
// 第二题
int x1 = 1,y1 = 1;
if(x1++==2 && ++y1==2)
{
x1 =7;
}
System.out.println("x1="+x1+",y1="+y1);
//x1=2 y1 = 1(存在短路现象x1++==2为false++y1==2不执行)
// 第三题
int x2 = 1,y2 = 1;
if(x2++==1 | ++y2==1)
{
x2 =7;
}
System.out.println("x2="+x2+",y2="+y2);
//x2 = 7 y2 = 2
// 第四题
int x3 = 1,y3 = 1;
if(x3++==1 || ++y3==1)
{
x3 =7;
}
System.out.println("x3="+x3+",y3="+y3);
}
//x3 = 7 y3 = 1
}
用标号(对continue同样适用)
package review;
public class review {
public static void main(String[] args) {
OUT:
for(int i=0;i<9;i++){
for(int j=0;j<9;j++){
System.out.println(i+"\t"+j);
if(j==1){
break OUT;
}
}
}
}
}