Java基础 - 基础
注释
-
//单行注释://
-
//多行注释:/* */
-
//JavaDoc文档注释:/** */
标识符
-
首字符:以字母、美元符($)、下划线(_)开始
-
首字符后为 字母、美元符($)、下划线(_)、数字 的任意组合
-
不能使用关键字命名
-
标识符大小写敏感
数据类型
八大基本类型
-
数值类型
1)整数类型
① byte 1字节(±127)
② short 2字节(±32767)
③ int 4字节(±2147483647)【最常用】
④ long 8字节(±9223372036854775807)【数字后加L】
byte i1 = 100;
short i2 = 1000;
int i3 = 1000000;
long i4 = 10L;
System.out.println(i1);
System.out.println(i2);
System.out.println(i3);
System.out.println(i4);-
整数扩展:进制【二进制0b,八进制0,十进制,十六进制0x】
int i1_ = 0b10;
int i2_ = 010;
int i3_ = 10;
int i4_ = 0x10;
System.out.println(i1_);
System.out.println(i2_);
System.out.println(i3_);
System.out.println(i4_);2)浮点类型
① float 4字节【数字后加F】
② double 8字节
float i5 = 1.1F;
double i6 = 1.999999999999999999;
System.out.println(i5);
System.out.println(i6);-
浮点数扩展:避免使用浮点数去比较
-
float 有限、离散、舍入误差、大约
-
//银行业务,使用 BigDecimal 数学工具类进行计算
-
float i5_ = 233333333333333213214f;
float i6_ = i5_ + 1;
System.out.println(i5_ == i6_);
//true,就是因为浮点数是个近似数,有误差3)字符类型:char 2字节
char i7 = 'a';
System.out.println(i7);-
字符扩展:所有字符本质还是数字
-
编码 unicode表 0-65536(2^16)
-
System.out.println((int)i7);
char i7_ = '\u0061'; //转移字符:\t制表符、\n换行
System.out.println(i7_); -
-
布尔值(boolean)类型:true、false
boolean i8 = true;
System.out.println(i8);-
boolean 扩展
//if (i8==true){} 等价于 if (i8){} -
引用类型
-
类
-
接口
-
数组
类型转换
低 ----------------------------------------------------------------------> 高
byte,short,char -> int -> long -> float -> double
-
强制转换(高 -> 低)
-
自动转换(低 -> 高)
注意:
-
布尔值不能进行转换
-
不能把对象类型转换为不相干的类型
-
把高容量转换到低容量的时候,强制转换
-
强制转换时可能出现内存溢出、精度问题
System.out.println((byte)128); //内存溢出
System.out.println((int)12.8); //精度问题
//操作较大的数时注意溢出问题
int money = 10_0000_0000; //JDK7新特性,数字之间可以用下划线分割
int year = 20;
long total1 = money * year; //计算的时候内存已经溢出
long total2 = money * ((long)year); //先把其中一个数转换为long
System.out.println(total1);
System.out.println(total2);
变量
type varName [=value] [{,varName[=value]}]
数据类型 变量名 = 值 【可以用逗号隔开来声明多个同类型变量】
注意:
-
每个变量都有类型,可以是基本类型,也可以是引用类型
-
变量名是合法的标识符
-
每个变量声明完以分号结尾
作用域
-
类变量
-
实例变量
1)从属于对象
2)如果不自行初始化,数值默认为0、0.0,布尔值默认为false,基本类型以外默认值为null
-
局部变量
必须声明和初始化值
public class week1_02 {
static double salary = 2500; //类变量
String name; //实例变量
int age = 18; //实例变量
public static void main(String[] args) {
int a = 100; //局部变量
System.out.println(a); //局部变量调用
System.out.println(salary); //类变量调用
//变量类型 变量名 = new week1_02()
week1_02 b = new week1_02(); //实例变量调用
System.out.println(b.age); //b.age.sout
}
}
常量
final 常量名 = 值
//final和static都是修饰符,不存在先后顺序
static final double PI = 3.14
final static double PI = 3.14
注意:
-
常量名一般使用大写字符
运算符
-
算数运算符:+,-,*,/,%,++,--
int a1 = 500;
int a2 = 400;
System.out.println(a1+a2);
System.out.println(a1-a2);
System.out.println(a1*a2);
System.out.println(a1/(double)a2);
//只要+号一侧出现String类型,就会把其他操作数转化为字符串然后将其连接
System.out.println(""+a1+a2); //500400 字符串在前面会进行拼接
System.out.println(a1+a2+""); //900 字符串在后面仍会计算
//a++和++a都相当于a=a+1,只是自增时机不同
int a3 = 3;
int a4 = a3++; //先赋值,后自增
int a5 = ++a3; //先自增,后赋值
System.out.println(a3); //5
System.out.println(a4); //3
System.out.println(a5); //5
//如果多个操作中有一个操作为long/double,结果也为long/double
//如果多个操作中没有long/double,无论操作中有无int,结果都为int
byte b1 = 100;
short b2 = 1000;
int b3 = 100000;
long b4 = 10000000L;
System.out.println(b1+b2+b3+b4); //long
System.out.println(b1+b2+b3); //int
System.out.println(b1+b2); //int
System.out.println(b1*b2); //int
//幂运算
double pow = Math.pow(2,3); //2^3
System.out.println(pow); -
赋值运算符:=
-
关系运算符:>,<,>=,<=,==,!=,instanceof
//关系运算符
int c1 = 10;
int c2 = 20;
System.out.println(c1>c2); //false
System.out.println(c1<c2); //true
System.out.println(c1==c2); //false
System.out.println(c1!=c2); //true -
逻辑运算符:&&,||,!
boolean d1 = true;
boolean d2 = false;
System.out.println("d1 && d2:" + (d1&&d2));
System.out.println("d1 || d2:" + (d1||d2));
System.out.println("!(d1 && d2):" + !(d1&&d2));
//短路运算
int d3 = 50;
boolean d4 = (d3<10) && (d3++<4);
System.out.println(d4); //false
System.out.println(d3); //50, d3++<4未执行 -
位运算符:&与,|或,^异或,~取反,>>左移,<<右移,>>>
//位运算 【效率极高】
/*
A = 0011 1100;
B = 1001 0100;
A&B = 0001 0100; //两位都为1记为1,其余记为0
A|B = 1011 1100; //两位都为0记为0,其余记为1
A^B = 1010 1000; //两位相同记为0,相异记为1
~B = 0110 1011; //取反,1记为0,0记为1
*/
System.out.println(2<<3); //<<相当于*2
System.out.println(8>>3); //<<相当于/2 -
条件运算符:?,:
-
x ? y:z
-
如果x==true,结果为y,否则结果为z
int score = 50;
String type = score>60 ? "及格" : "不及格";
System.out.println(type); -
-
扩展赋值运算符:+=,-=,*=,/=
包机制
-
package pkg1[. pkg2[. pkg3 ...]]; 【必需放在内容的最上方】
-
一般利用公司域名作为包名【com.baidu.www】
-
导入包:import package1[. package2 ...].(classname*|);【*为通配符,即导入该包下所有的类】
javaDoc
-
javaDoc命令用于生成自己的API文档
-
加在类中就是类的注释,加在方法中就是方法的注释
-
参数信息
-
@author 作者名
-
@version 版本号
-
@since 指明需要最早使用的 jdk 版本
-
@param 参数名
-
@return 返回值情况
-
@throws 异常抛出情况
/**
* @author Mo
* @version 1.0
* @since 1.8
*/ -
-
通过命令行生成生成API文档
-
通过IDEA生成 JavaDoc文档
-
选择是整个项目还是模块还是单个文件
-
文档输出路径
-
Locale 选择地区,这个决定了文档的语言,中文就是zh_CN
-
传入JavaDoc的参数,一般这样写 -encoding UTF-8 -charset UTF-8 -windowtitle “文档HTML页面标签的标题” -link http://docs.Oracle.com/javase/7/docs/api
-
-

浙公网安备 33010602011771号