1. 设置java运行环境
1.Windows:
设置环境变量,JAVA_HOME,CLASSPATH,PATH.成功后,在命令行中检验是否正确:
2.Linux:
修改/etc/profile
1234JAVA_HOME=/opt/jdk1.6.0_06CLASSPATH=$JAVA_HOME/lib:$CLASSPATHPATH=$JAVA_HOME/bin:$PATHEXPORT JAVA_HOME CLASSPATH PATH
2. eclipse
eclipse是利用Java编写的,所以需要java运行环境。Windows下,如果安装jdk时选择安装 ”公共JRE”,则eclipse可以自动找到Java运行环境,否则需要在环境变量中配置jdk环境。
3. 编译
如下是一个HelloWorld.java中的代码:
123456packagecom.gr.java;publicclassHelloWorld{publicstaticvoidmain(String[] args){System.out.println("Hello world");}}
CMD下运行:
javac –d . HelloWorld.java,这样会按照package组织目录,如下,在com/gr/java/目录中。
如果直接输入javac HelloWorld.java, 这样会在与HelloWorld.java相同目录下生成一个HelloWorld.class,我们需要把生成的字节码文件放到我们自己组织的目录结构中,如下:
4. 打jar包
jar包可以把.class文件打包压缩进行统一管理,打包命令如下:
会在当前目录下生成hello.jar,如下:
将hello.jar加入CLASSPATH中,
Windows:
set CLASSPATH=%CLASSPATH%;C\USERS\GR\hello.jar;
Linux:
set CLASSPATH=$CLASSPATH:/home/gr/hello.jar
这样,可以将.class文件打包成jar文件,执行java com.gr.java.HelloWorld即可。
在指定的jar包中查找.class文件执行:
5. Java只允许一个文件中出现一个public类。
6. Java中的包装类及其拆箱装箱
基本类型的数据不是对象,要使用类的方法,必须装基本类型转换为对象。
byte – Byte short – Short int – Integer long - Long
float - Float double – Double
char – Character
bool – Boolean
看如下代码:
12345678Integer a =100;Integer b =100;Integer c =200;Integer d =200;log.info(a == b);log.info(a ==100);log.info(c == d);log.info(c ==200);Integer对象之间使用==是比较引用的对象是否相同,而不是其值大小是否相等。>=、<=之间会对Integer进行拆箱处理,判断其值的大小。
1、3是不同对象的比较应该为false, 2、4是值大小的比较应该为true,
我们来看结果:
2、4会对a,c进行拆箱转换为基本数据类型比较,应该为true。
1、3为对象的比较,1是true,3是false,出现了两种不同的结果。
实际上,在定义a,b,c,d时,Integer a = 100;等于如下语句:
Integer a = Integer.valueOf(100);
我们来看看valueOf这个函数具体是怎样实现的。如下是jdk中的代码:
1234567891011121314151617181920publicstaticInteger valueOf(inti) {if(i >= -128&& i <= IntegerCache.high)returnIntegerCache.cache[i +128];elsereturnnewInteger(i);}privatestaticclassIntegerCache {staticfinalinthigh =127;staticfinalInteger cache[];static{finalintlow = -128;cache =newInteger[(high - low) +1];intj = low;for(intk =0; k < cache.length; k++)cache[k] =newInteger(j++);}privateIntegerCache() {}}从代码中我们可以看到,jdk为了加快速度,对-128到127之间的整型数据进行了缓存,这样,就导致了初始化的时候,a,b取得了对同一个对象的引用。所以进行比较的时候出现了相等的情况,如果不在这个范围,就没有了这种情况。这也进一步地证明,==是对引用的对象进行比较的。
7. Java中a%b, b允许有小数,C语言中要求必须是整数。b为负数时,结果为正。a为负数时,结果为负。
8. ++问题
123inta =1;a = a++;System.out.println(a);
输出结果为2,先执行a++表达式结果为1,之后a自增变为2,再将a++表达式的结果赋给a,所以a最终结果为2.
9. equals()、hashCode()
equals()方法一般用来比较对象的内容是否相等,一般需要覆盖。
hashCode()值要稳定,一个对象创建以后值就不应再变化。两个对象equals比较为true时,应具有相同的hashCode()值。
10. 当class中不写构造器时,javac会提供一个无参默认构造器,若提供构造器声明,javac将不再提供默认构造器。
11. Java方法参数传递只有一种形式,基于值的传递,是变量值的传递。
1. 基本类型就是值的复制
2. 引用类型是引用值(地址)的复制。
本文详细介绍Java环境的搭建步骤,包括Windows和Linux系统下的JAVA_HOME、CLASSPATH等环境变量配置,并介绍了Eclipse IDE的Java环境配置方法。此外,还通过实例讲解了Java程序的编译、打包过程及类加载机制,探讨了Java中的基本数据类型与包装类的使用,以及自动装箱拆箱的特点。








5381

被折叠的 条评论
为什么被折叠?



