Java学习笔记

  • 参考书目

Head First Java

head first java


java 的integer与boolean两种类型并不相容,只能用下面的boolean变量来测试

boolean isHot = true;
while (isHot){ }

centos安装java和jdk

参考 CentOS-6.3安装配置JDK-7,当前安装的为最新jdk8

  1. 查看java版本

     # java -version
    
  1. 查看JDK信息

     rpm -qa | grep java
    
    #结果
    tzdata-java-2012c-1.el6.noarch        
    java-1.6.0-openjdk-1.6.0.0-1.45.1.11.1.el6.x86_64            
  1. 卸载openjdk,执行以下操作

     rpm -e --nodeps tzdata-java-2012c-1.el6.noarch
     rpm -e --nodeps 
    
  1. 安装

     wget http://download.oracle.com/otn-pub/java/jdk/8u5-b13/jdk-8u5-linux-x64.rpm --no-check-certificate
    
     rpm -ivh jdk-8u5-linux-x64.rpm
    

    如果下载失败,请到 java下载页下载后再上传到服务器

  2. 设置环境变量

    • /etc/profile下追加以下内容

        #add java path
        JAVA_HOME=/usr/java/jdk1.8.0_05
        JRE_HOME=/usr/java/jdk1.8.0_05/jre
        PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
        CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
        export JAVA_HOME JRE_HOME PATH CLASSPATH
      
    • 执行使之生效

        source /etc/profile
      
    • 删除原来的bin

        rm -rf /usr/bin/javac
        rm -rf /usr/bin/jar
        rm -rf /usr/bin/java
      
    • 建立软链接

        ln -s /usr/java/jdk1.8.0_05/bin/javac /usr/bin/javac
        ln -s /usr/java/jdk1.8.0_05/bin/jar /usr/bin/jar
        ln -s /usr/java/jdk1.8.0_05/bin/java /usr/bin/java
      
    • 检测是否成功

        java -version
      

      如果报错如下:

      javac: error while loading shared libraries: libjli.so: cannot open shared object file: No such file or directory

      处理如下:

        find / -name libjli.so #查找libjli.so路径
      
        cp /usr/java/jdk1.8.0_05/jre/lib/amd64/jli/libjli.so /lib
      
        ldd /usr/bin/java
      

在windows下与Linux配置类似,但需要注意:

  1. 全局变量设置里windows是用 %变量名% 表示而非$变量名 的形式

  2. 目录使用 \ 而非/

  3. 分隔符采用 ; 而非 :


编译和运行

文件1:Dog.java:

class Dog {

    int size;
    String breed ;
    String name;

    void bark() {
        System.out.println("Ruff! Ruff!");
    }

}

文件2:DogTestDrive.java:

class DogTestDrive {
    public static void main(String[] args) {
        Dog d = new Dog();
        d.size = 40;
        d.bark();
    }
}

编译:

javac DogTestDrive.java 

将在当前目录生成DogTestDrive.class和Dog.class

运行:

java DogTestDrive

静态变量

  • 静态变量会在任何对象创立前就完成初始化.
  • 静态变量会在类的任何静态方法执行之前就初始化.

静态初始化程序

一段在加载类时会执行的程序代码,它会在其他程序可以使用该类之前就执行,所以很适合放静态final变量的起始程序:

class Foo {
    final static int x;
    static {
        x = 42;

    }

}

静态final变量如果没有在声明中或者在静态初始化程序中赋值,编译将报错。

常量

  • 在 java 中,常量是把变量同时标志为static和final的。
  • 常量的命名惯例是全部大写,使用_来分隔
  • final 变量一旦被赋值无法更改

autoboxing类型转换

将String转为其他类型

String s = "2";
int x = Integer.parseInt(s);
double d = Double.parseDouble("43.42");
boolean b = new Boolean("true").booleanValue();

将其他类型转为String:

double d = "43.12";
String s = "" + d; //+被重载过,double接空字符串转为字符类型
//或者
String s = Double.toString(d);//静态方法

数字格式化打印

通过java.utilFormate类进行打印

以逗号分隔打印:

String s = String.format("%,d",100000000);

保留两位小数:

s = String.format("I have $%.2f ",5926.2259);

逗号和保留两位小数:

s = String.format("I have $%,.2f ",1115926.2259);    

时间日期的格式化打印

先要引入时间日期类

import java.util.Date;

当前日期:

String t = String.format("%tc",new Date());

只有时间:

t = String.format("%tr",new Date());

周、年、月:

t = String.format("%tA %tB %td",today,today,today);

同上,不使用重复参数时:

t = String.format("%tA %<tB %<d",today);

更多参考:http://www.blogjava.net/juhongtao/articles/12230.html