好奇的探索者,理性的思考者,踏实的行动者。
Table of Contents:
JRE(Java Runtime Environment),它是你运行一个基于Java语言应用程序的所正常需要的环境。如果你不是一个程序员的话,这些足够你的需要。
JDK代表Java开发工具包,如果你想做一些有关Java的开发(阅读程序),这正是你所需要的。
OpenJDK是Java开发工具包的开源实现,Oracle JDK是Java开发工具包的官方Oracle版本。尽管OpenJDK已经足够满足大多数的案例,但是许多程序比如Android Studio建议使用Oracle JDK,以避免UI/性能问题。
配置java环境变量
* JAVA_HOME
配置JDK的根目录,目的是为了方便引用。
第三方软件会引用约定好的JAVA_HOME变量, 不然, 你将不能正常使用该软件,比如JavaEE 最常用的服务器Tomcat.
* CLASSPATH
指定到哪里去找运行时需要用到的类代码(字节码)
* PATH
指定可执行程序的位置
windows下
PATH-----C:\Program Files (x86)\Java\jdk1.8.0_40\bin;
JAVA_HOME---C:\Program Files (x86)\Java\jdk1.8.0_40
CLASSPATH ---.;C:\Program Files (x86)\Java\jre1.8.0_40\lib .是当前目录 是要加上的 找到指定文件的类库
bin中有Javac.exe(编译器) Java.exe(解释器) javadoc 等
linux下
/etc/profile中修改环境变量
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
public class Demo3 {
@BeforeClass
public static void setUpBeforeClass() throws Exception {
System.out.println("setUpBeforeClass()");
}
@Test
public void test1(){
System.out.println("test1()");
}
@Test
public void test2(){
System.out.println("test2()");
}
@AfterClass
public static void tearDownAfterClass() throws Exception {
System.out.println("tearDownAfterClass()");
}
}
增强for循环只能用在数组、或实现Iterator接口的集合类上
Java没有类似C#里var或者C++11 auto这样的关键字
//增强for循环
public class Demo1 {
@Test
public void test2(){
int[] is = {1,2,3,4,5};
for(int value : is){
System.out.print(value+"\t");
}
}
@Test
public void testSet(){
Set<Integer> set = new HashSet<Integer>();
set.add(100);
set.add(200);
set.add(300);
Iterator<Integer> it = set.iterator();
while(it.hasNext()){
Integer key = it.next();
System.out.print(key+"\t");
}
}
@Test
public void testList(){
List<String> list = new ArrayList<String>();
list.add("jack");
list.add("marry");
list.add("sisi");
for(String name : list){
System.out.print(name+"\t");
}
}
@Test
public void testMap1(){
Map<Integer,String> map = new HashMap<Integer,String>();
map.put(100,"jack");
map.put(200,"marry");
map.put(300,"sisi");
Set<Integer> set = map.keySet();
Iterator<Integer> it = set.iterator();
while(it.hasNext()){
Integer key = it.next();
String value = map.get(key);
System.out.println(key+"-"+value);
}
}
@Test
public void testMap2(){
Map<Integer,String> map = new HashMap<Integer,String>();
map.put(100,"jack");
map.put(200,"marry");
map.put(300,"sisi");
Set<Entry<Integer,String>> set = map.entrySet();
Iterator<Entry<Integer,String>> it = set.iterator();
while(it.hasNext()){
Entry<Integer,String> entry = it.next();
Integer key = entry.getKey();
String value = entry.getValue();
System.out.println(key+"<->"+value);
}
}
}
ListIterator是一个功能更加强大的, 它继承于Iterator接口,只能用于各种List类型的访问。
ListIterator和Iterator的区别
1)使用范围不同:Iterator能遍历set、list集合,而ListIterator只能遍历list集合。
2)遍历顺序有区别:ListIterator和Iterator都有hasNext()和next()方法,可以实现顺序向后遍历,但是ListIterator有hasPrevious()和previous()方法,可以实现逆向(顺序向前)遍历。Iterator就不可以。
3)是否能定位当前索引位置:ListIterator可以定位当前的索引位置,nextIndex()和previousIndex()可以实现。Iterator没有此功能。
4)是否能修改对象:都可实现删除对象,但是ListIterator可以实现对象的修改,set()方法可以实现。Iierator仅能遍历,不能修改。
5) 是否能添加对象:ListIterator有add()方法,可以向List中添加对象,而Iterator不能。
//迭代集合注意的细节
public class Demo2 {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("jack");
list.add("marry");
list.add("sisi");
System.out.println("list前长度"+list.size());
//Iterator<String> it = list.iterator();
ListIterator<String> it = list.listIterator();
while(it.hasNext()){
String key = it.next();
System.out.print(key+"\t");
//动态通知迭代器,加入了新元素,从而迭代器自动通知List集合
it.add("qq");
}
System.out.println("\nlist后长度"+list.size());
it = list.listIterator();
while(it.hasNext()){
String key = it.next();
System.out.print(key+"\t");
}
}
}
public class Demo1 {
public static void show1(String[] arr) {
for(String a :arr){
System.out.print(a+"\t");
}
}
public static void show2(String... arr) {
for(String a :arr){
System.out.print(a+"\t");
}
}
public static void show3(String qq,String... arr) {
System.out.println("第一个参数是:" + qq);
for(String a :arr){
System.out.print(a+"\t");
}
}
}
Gson的应用主要为toJson与fromJson两个转换函数,而在使用这种对象转换之前需
先创建好对象的类以及其成员才能成功的将JSON字符串成功转换成相对应的对象。
class Examples {
private int answer1 = 100;
private String answer2 = "Hello world!";
Examples(){
} // default constructor
}
// 序列化JAVA对象成JSON字符串
Examples example1 = new Examples();
Gson gson = new Gson();
String json = gson.toJson(example1); //==> json is {"answer1":100,"answer2":"Hello world!"}
// 反序列化JSON字符串成对应的JAVA对象
Examples example2= gson.fromJson(json,Examples.class);
String dateString = "2012-12-06 ";
try
{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd ");
Date date = sdf.parse(dateString);
}
catch (ParseException e)
{
System.out.println(e.getMessage());
}