注释
- 单行注释
//这是一个单行注释
- 多行注释
/*多行注释
多行注释
多行注释*/
- JavaDoc:文档注释
/**
*@Desciption HelloWorld
*@author:Alingo
*/
数据类型
基本类型(primitive type)
数值类型
整数类型
-
byte占1一个字节范围:-128~127 (-2(8-1)~2(8-1)-1)
对应类Byte
-
short占2个字节范围:-3276832767(-2<sup>(16-1)</sup>2(16-1)-1)
-
int占4个字节范围:-21474836482147483647(-2<sup>(32-1)</sup>2(32-1)-1)
对应类Integer
-
long占8个字节范围:(-2(64-1)~2(64-1)-1)
long num = 30L; //long类型要在数字后面加一个L
整数扩展
int i = 10;
int i2 = 010; //八进制以0开头 所以i2的值是8
int i3 = 0x10; //十六进制以0x开头,0~9,A~F,所以i3的值是16
浮点数扩展
float f = 0.1f;
float d = 1.0/10;
System.out.println(f==d);//true
float d1 = 232323232323232323f;
float d2 = d1 + 1;
System.out.println(d1==d2);//true
这是因为 float是 有限 离散 存在摄入误差 大约 接近但不等于的
所以最好完全避免使用浮点数进行比较!!!
对于银行业务,在使用 BigDecimal 数学工具类
字符扩展
编码 Unicode 表:(97 = a, 65 = A) 2字节 0~65536
转义符
// \t 制表符
// \n 换行
浮点类型
- float占4个字节
float num2 = 50.1F;//float类型要在数字后面加一个F
- double占8个字节
字符类型
char占2个字节
//字符
char name = 'A';
//字符串,String不是关键字,是一个类!
String name = "AAA";
boolean类型
占一位,其值只有true和false
引用类型(reference type)
类
接口
数组
类型转换
低------------------------------------------------------------------------->高
byte,short,char->int->long->float->double
运算中,不同类型的数据先转换为同一类型,再进行运算
(按字节数由低到高,但是long(8个字节),float(4个字节),但float浮点数强于整数)
强制类型转换(高-->低)
int i =128;
byte b = (byte)i; //强制类型转换
System.out.println(i); //128
System.out.println(b); //-128 因为溢出了
自动类型转换(低-->高)
Tips:
-
不能对布尔值进行转换
-
不能把对象类型转换为不相干的类型
-
转换的时候可能存在内存溢出,或精度问题
常见问题:
int money = 10_000_000;
int years = 20;
long total = money*years;
long total2 = (long)years*money;
System.out.println(total);
/*-1474836480 溢出了,因为money*years先做乘法就会先默认得到int 再进行强制类型转换成long 但已经溢出了 */
System.out.println(total2);
//20000000000
变量作用域
public class Variable{
static int allClicks = 0; //类变量 用static 标记
String str = "hello world"; //实例变量
public void method(){
int i = 0; //局部变量 写在方法里面
}
}
运算符
public class Demo01 {
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println(a/b); //0 因为此时是int型
System.out.println(a/(double)b); //0.5
}
}
- 关系运算符:instaceof 用来测试一个对象是否为一个类的实例
boolean result = obj instance of Class
- 位运算符: &,|,^,~,>>,<<,>>>
- 条件运算符: ? :
// x ? y : z
//如果 x==true 则结果为y,否则结果为z
int score = 80;
String type = score < 60 ? "不及格" : "及格"; //"及格""
运算中有long结果为long, 有double(无long)结果为double 其他的都是int!!
public class Demo01 {
public static String getType(Object a){
return a.getClass().toString();
}
public static void main(String[] args) {
long a = 12131231231231L;
int b = 123;
short c = 10;
byte d = 8;
double e = 123123131;
byte f = 2;
System.out.println(a+b+c+d); //long类型
System.out.println(b+c+d); //int类型
System.out.println(c+d); //int类型 运算中有long结果为long, 有double(无long)结果为double 其他的都是int
System.out.println(getType(a+d)); //long
System.out.println(getType(b+e)); //double
System.out.println(getType(d+f)); //int!!!
}
}
- 字符串连接符: ()+() 如果+两侧出现了字符串类型,则加号把两侧都先转换为字符串,再进行拼接
int a = 10;
int b = 20;
System.out.println("" + a + b); //"1020"
System.out.println(a + b + ""); //"30"
包机制
等同于文件夹
- 包语句的语法格式为:
package pkg1[. pkg2[. pkg3...]];
一般利用公司域名倒置作为包名: www.baidu.com: com.baidu.www
- 导入包
import java.util.Date; //注意 package必须放在代码的最上面
import com.feng.* //通配符 导入这个路径下所有的package
JavaDoc
javadoc命令是用来生成自己的API文档的
参数信息
-
@author 作者名
-
@version 版本号
-
@since 指明需要最早使用的jdk版本
-
@param 参数名
-
@return 返回值情况
-
@throws 异常抛出情况
加在类上面就是类的注释 加在方法上面就是方法的注释
生成文档
- 命令行生成
javadoc -encoding UTF-8 -charset UTF-8 Doc.java //其中Doc.java是写的类
- Idea 点击Tool GenerateJavaDoc