Java基础01:注释
public class Hello{ //单行注释
public static void main(String[] args){ //快捷键psvm
System.out.println("Hello world!"); //快捷键sout
}
} /*多行注释
语句结尾一定要有分号*/
/**
* 文档注释,可以定义功能
* @Description Hello world
*/
Java基础02:标识符和关键字
public class Hello{ //关键字在Java语言中具有专门的意义和用途,不能当作一般的标识符来使用
public static void main(String[] args){
String class = "This is a wrong grammar!"; //不能和关键字重复
int num = 10; //以字母、$或下划线开头
int NUM = 20; //大小写敏感
}
Java基础03:数据类型
Java是强类型语言,所有变量必须先声明类型才能使用!
基本类型
数值类型
整数类型
public class Hello{
public static void main(String[] args){
byte num1 = 10; //1个字节
short num2 = 20; //2个字节
int num3 = 30; //4个字节,最常用
long num4 = 40L; //8个字节,数值后要加L
}
整数类型拓展:十进制、八进制和十六进制的表示
public class Hello {
public static void main(String[] args) {
int i1 = 10; //十进制
int i2 = 010; //八进制,0开头
int i3 = 0x10; //十六进制,0x开头
System.out.println(i1); //10
System.out.println(i2); //8
System.out.println(i3); //16
}
}
浮点类型
public class Hello{
public static void main(String[] args){
float num1 = 1.5F; //4个字节,数值后要加F
double num2 = 1.5; //8个字节,最常用
}
浮点类型拓展:float和double精度有限,不能用来比较数值大小!(银行业务采用BigDecimal工具类来表示数值)
public class Hello {
public static void main(String[] args) {
float f = 0.1F;
double d = 1.0/10;
System.out.println(f == d); //false
float f1 = 215154151454545f;
float f2 = f1 + 1;
System.out.println(f1 == f2); //true
}
}
字符类型
public class Hello{
public static void main(String[] args){
char word = ‘中‘; //2个字节,只能是一个字符,注意是单引号,双引号代表字符串
}
字符类型拓展:int强制类型转换时,会将字符转化为Unicode编码
public class Hello {
public static void main(String[] args) {
char c1 = ‘A‘;
char c2 = ‘中‘;
System.out.println(c1); //A
System.out.println(c2); //中
System.out.println((int)c1); //65(强制类型转换见后)
System.out.println((int)c2); //20013,Unicode编码
}
}
注意:字符串String是类(引用类型见后),不是数值类型!
boolean类型
public class Hello{
public static void main(String[] args){
boolean flag1 = true; //1位
boolean flag2 = false; //只有两种值
}
引用类型(见后)
类
接口
数组
Java基础04:类型转换
Java数据类型转换,分为强制类型转换和自动类型转换。一般遵循由低到高的优先级顺序,也就是自动类型转换,否则可能会发生内存溢出的后果。顺序优先级为byte,short,char——int——long——float——double
public class Hello {
public static void main(String[] args) {
int i = 128;
byte b = (byte)i ; //强制类型转换,高容量转为低容量,容易发生内存溢出
double c = i; //自动类型转换,低容量转为高容量
System.out.println(i); //128
System.out.println(b); //-128,内存溢出
System.out.println(c); //128.0
/* 强制类型转换规则:类型A 变量A = (类型B)变量B */
System.out.println((int)23.7); //23,损失精度
System.out.println((int)-45.89F); //-45
char d = ‘a‘;
int e = d + 1;
System.out.println(e); //98,字符转换成了Unicode编码
System.out.println((char)e); //b,数字转换成了Unicode编码对应的字符
//操作比较大的数的时候,注意溢出问题
int money = 10_0000_0000; //JDK7新特性,数字之间可以用下划线分割
int years = 20;
int total1 = money * years;
long total2 = money * years;
long total3 = money * ((long)years);
System.out.println(total1); //-1474836480,计算结果过大,发生溢出
System.out.println(total2); //-1474836480,计算结果已经是int类型,再转换成long类型也没用
System.out.println(total3); //20000000000,先自动转换一个计算因子,结果也会自动转换,因此正确
}
}
/**
* 注意点:
* 1. 不能对布尔值进行转换
* 2. 不能把对象类型转换为不相干的类型
* 3. 在把高容量转换到低容量的时候,使用强制转换
* 4. 转换的时候可能存在内存溢出,或者精度问题!
*/