java基础
数据类型
java强类型语言,所有变量必须先定义后使用。
java中的数据类型分两大类分别是
- 基本类型
- 引用类型
long num=30L //long类型在后面加L 为了区分
float num=30.1F //float类型在后面加F 为了区分
- 位(bit):计算机内部数据存储的最小单位
- 字节(byte):是计算机中数据处理的基本单位,习惯上用大写B表示
- 1B(byte,字节)=8bit(位)
- 1Bbyte=8bit 1024B=1KB 1024KB=1M
- 二进制以0b开头
- 八进制以0开头
- 十六进制以0x开头
最好完全避免使用浮点类型进行比较, 因为浮点数 是离散,会舍入误差
银行业务 使用 BigDecimal数学工具类 不使用浮点数
float f=0.1f;
double d=1.0/10;
System.out.println(f == d); //false
float d1=2546546549879879f;
float d2=d1+1;
System.out.println(d1 == d2);//true
所有的字符本质还是数字 Unicode编码
a=97 A=65 ‘\u0061’ =a \u表示转义
转义字符
所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示。而C中定义了一些字母前加""来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思了。
\t 制表符 \n换行
类型转换
byte ,short , char -> int -> long -> float -> double
小数的优先级大于整数 所以float在前,不同的数据类型转换成同一类型,在进行运算
强制类型转换
int i =128;
byte j=(byte) i; // 强制转换 高->低 byte最大为127 内存溢出
System.out.println(j); // -128
自动类型转换
int i =128;
double j= i; //低到高 会自动转换
System.out.println(j); //128.0
char c='a'
int d=c+1; //低到高 会自动转换
System.out.println(d); //98
注意
1. 布尔值不能进行转换 因为布尔是位
2. 转换的时候可能出现内存溢出,或精度问题
//jdk7新特性,数字之间可以用下划线分隔
int money = 10_0000_0000;
System.out.println(money); //1000000000
int year = 20;
int total = money * year;
System.out.println(total); //-1474836480,内存溢出
long tota2 = money * year;
System.out.println(total); //-1474836480,还是会内存溢出,因为
//money和year都是整数 在转换成long前就出现问题了
long tota3 = money * ((long) year); //正确写法
System.out.println(tota3); //20000000000正确
变量 常量 作用域
变量:可以变化的量。
变量作用域
类变量: 从属于类,类变量。
实例变量:从属于对象,不用初始化。默认值 数值类型是0,字符串默认是 null 布尔值默认 false。除了基本类型其他默认值都是null。
局部变量: 必须声明和初始化值,只在{ }内有效
public class test01 {
static int a=0; //类变量
String str="哈啊哈"; //实例变量
public static void main(String[] args) {
int i=0; //局部变量
}
}
常量:初始化后不能再改变值! 常量一般使用大写字符命名。
final double PI=3.14;
变量的命名规范
类成员变量,局部变量:首字母小写和驼峰原则
常量:大写字母和下划线 MAX_YES
类名:首字母大写和驼峰原则
方法名:首字母小写和驼峰原则
运算符
- 算术运算符包括通常的加(+)、减(-)、乘(*)、除(/)、取模(%),“++”和“–”
- 关系运算符用来比较两个值,包括大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、等于(==)和不等于(!=)
- 逻辑运算符包括逻辑与(&&)、逻辑或(||)和逻辑非(!)。
- 位运算符用来对二进制位进行操作,包括按位取反(~)、按位与(&)、按位或(|)、异或(^)、右移(>>)、左移(<<)和无符号右移(>>>)。
- 赋值运算符:=
- 扩展复制运算符:+=,-=,*=,/=
- 条件运算符( ? : )
多个操作数中有一个为lang类型 结果就是lang类型,如果没有lang结果都为int
long a=13456465465L;
int b=123;
short c=11;
byte d=20;
System.out.println(a+b+c+d); //结果Long类型
System.out.println(b+c+d); //结果int类型
System.out.println(c+d); //结果int类型
关系运算符:返回值是 布尔值
自增自减 :
int a=3;
int b=a++; //执行完这行代码后,先给b赋值,再自增
//相当于下行代码隐藏了 a=a+1
System.out.println(a); //4
//++a 相当于在前面执行了a=a+1
int c=++a;//执行完这行代码前,先自增,再赋值
System.out.println(a); //5
System.out.println(b); //3
System.out.println(c); //5
位运算
A=0011 1100
B=0000 1101
A&B=0000 1100
A|B=0011 1101
A^B=0011 0001
~B=1111 0010
<< *2 >> /2
字符串连接符
int a=10;
int b=20;
//字符串连接符 +,String
System.out.println(""+a+b); //1020 连接 字符串在前会拼接
System.out.println(a+b+""); //30
三元运算符
// x ? y:z
int a=10;
System.out.println(a > 20?"哈哈" : "呵呵"); //呵呵
包机制
为了更好的组织类,java提供了包机制,用于区别类名的命名空间
包的命名规则:一般是公司域名倒置作为包名 www.baidu.com 包名: com.baidu.www
为了能使用某一包的成员,我们需要导入包,import package 即可
javaDOC
javadoc命令是用来生成自己的API文档的
标签 | 说明 |
---|---|
@author | 作者标识 |
@version | 版本号 |
@return | 对函数返回值的描述 |
@param | 说明方法的参数 |
@since | 指明需要最早使用的jdk版本 |
@throws | 异常抛出情况 |
在命令行 javadoc -encoding UTF-8 -charset=UTF-8 类名.java 就会生成doc文当
-encoding UTF-8 -charset=UTF-8为了显示中文
使用IDEA生成javadoc文档