Java学习笔记
- 参考书目
Head First Java
java 的integer与boolean两种类型并不相容,只能用下面的boolean变量来测试
boolean isHot = true;
while (isHot){ }
centos安装java和jdk
参考 CentOS-6.3安装配置JDK-7,当前安装的为最新jdk8
查看java版本
# java -version
查看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
卸载openjdk,执行以下操作
rpm -e --nodeps tzdata-java-2012c-1.el6.noarch rpm -e --nodeps
安装
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下载页下载后再上传到服务器
设置环境变量
向/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配置类似,但需要注意:
全局变量设置里windows是用 %变量名% 表示而非$变量名 的形式
目录使用 \ 而非/
分隔符采用 ; 而非 :
编译和运行
文件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.util
的Formate
类进行打印
以逗号分隔打印:
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);