注释
当行注释
//当行注释l
多行注释
/*
多行注释
注释一段文字
*/
文档注释
//JavaDoc:文档注释 /** */
/**
* @Deserciption HelloWorld
* @Author
*/
标识符
关键字
Java所有的组成部分都需要名字。类名、变量名以及方法名都被称之为标识符
数据类型
基本类型
public static void main(String[] args) {
//八大基本数据类型
//整数
int num1 = 10; //最常用
byte num2 = 20;
short num3 =30;
long num4 = 40L; //Long类型要在后面加L
//小数:浮点数
float num5 = 50.1F; //float类型要在后面加个F
double num6 = 3.1415926535897932846263;
//字符
char name = 'A';
/**
//字符串,String不是关键字,是类
String name = "yuki";
*/
//布尔值
boolean flag = true;
boolean flag1 = false;
}
引用类型
类
接口
数组
数据类型拓展
- 整数拓展:进制
int i = 10; int i2 = 010; //八进制0 int i3 = 0x10; //十六进制0x System.out.println(i); //10 System.out.println(i2); //8 System.out.println(i3); //16
- 浮点数拓展:如银行业务如何表示?
float f = 0.1f; //0.1 double d = 1.0/10; System.out.println(f==d);//false System.out.println(f); System.out.println(d); float d1 = 223233232f; float d2 = d1 + 1; System.out.println(d1==d2);//true
最好完全不要使用浮点数进行比较! - 字符拓展:所有的字符本质上还是数字
编码采用Unicode编码,如97表示a,65表示A,一个字符占两个字节
范围:0 - 65536 Excel 2^16=65536char c1 = 'a'; char c2 = '中'; System.out.println(c1); System.out.println((int)c1); //强制转换 System.out.println(c2); System.out.println((int)c2); //强制转换 //所有的字符本质还是数字 // U0000 UFFF char c3 = '\u0061'; System.out.println(c3); //a
- 布尔值拓展:Less is More! 代码要精简易读!
类型转换
容量低–>容量高:
byte,short,char->int->long->float->double
- 强制转换:容量高–>低;
- 自动转换:低–>高
int i =128;
byte b = (byte) i; //内存溢出
double a = i; //自动转换
//强制转换 (类型)变量名 高-->低
//自动转换 低-->高
System.out.println(i); //182
System.out.println(b); //-128
System.out.println(a); //128
注意点:
- 不能对布尔值进行转换
- 不能把对象转换为毫不相干的类型
- 高到低,强制转换
- 转换可能存在内存溢出,或者精度问题
System.out.println((int)23.7); //23 System.out.println(((int)-45.89f)); //-45 char c = 'a'; int d = c + 1; System.out.println(d); //98 System.out.println((char)d); //b
注意点:
-
操作比较大的数的时候,注意溢出问题
-
JDK7新特性,数字之间可以用下划线分割
int money = 10_0000_0000; System.out.println(money); //1000000000 int years = 20; int total = money*years; //-1474836480,计算的时候溢出了 long total2 = money*years; //默认是int,转换之前已经存在问题了 long total3 = money*(long)years; //先把一个数转为long System.out.println(total); //-1474836480 System.out.println(total2); //-1474836480 System.out.println(total3); //20000000000
变量
Java是一种强类型语言
-
注意点:
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型
- 变量名必须是合法标识符
- 变量声明是一条完整的语句,因此每一个变量名必须以分号结束
-
变量作用域
- 类变量
变量名用static修饰,从属于类
//类变量 static 从属于类 static double salary = 2500; //main方法 public static void main(String[] args) { //类变量 static System.out.println(salary); //2500.0 }
- 实例变量
从属于对象;如果不进行初始化,这个类型的默认值为0 0.0;
布尔值默认为false
除了基本类型,其余的默认值都为null
String name; int age; //main方法 public static void main(String[] args) { //变量类型 变量名字 = new Demo10(); Demo10 demo10 = new Demo10(); System.out.println(demo10.name); //null System.out.println(demo10.age); //0 }
- 局部变量
//main方法 public static void main(String[] args) { //局部变量 int i = 10; System.out.println(i); //10 } //其他方法 public void add(){ // System.out.println(i); //无法输出 }
- 类变量
常量
常量即不会动的值
//修饰符,不存在先后顺序
final static double PI =3.14;
static final double PI1 =3.14;
public static void main(String[] args) {
System.out.println(PI); //3.14
System.out.println(PI1); //3.14
}
变量名规范
- 变量名、方法、类名:见名知意
- 类成员变量:首字母小写和驼峰原则:monthSalary 、lastName
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线:MAX_VALUE
- 类名:首字母大写和驼峰原则:Man、GoodMan
- 方法名:首字母小写和驼峰原则:run()、runMan()
运算符
算术运算符
二元运算符
// 二元运算符
int a = 10;
int b = 20;
int c = 25;
int d = 25;
System.out.println(a+b); //30
System.out.println(a-b); //-10
System.out.println(a*b); //200
System.out.println(a/b); //0
System.out.println(a/(double)b); //0.5
不同数据类型运算自动转换为容量大的数据类型,但最小转转为Int
long a = 123123123123123L;
int b = 123;
short c = 10;
byte d = 8;
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 = a + 1
System.out.println(a); //4
//a++ a = a + 1
int c = ++a; //执行代码后,先自增,再给b赋值
System.out.println(a); //5
System.out.println(a); //5
System.out.println(b); //3
System.out.println(b); //3
System.out.println(c); //5
System.out.println(c); //5
关系运算符
关系运算符返回结果为布尔值,即true或false
int a = 10;
int b = 20;
int c = 21;
//模运算
System.out.println(c%a); //1
System.out.println(a>b); //false
System.out.println(a<b); //true
System.out.println(a==b); //false
System.out.println(a!=b); //true
逻辑运算符
与(and) 或(or) 非(取反)
- 逻辑与运算:两个变量都为真,结果才为true
- 逻辑或运算:两个变量有一个为真,则结果为true
- 逻辑非运算:如果为真,则变为假,如果为假则变为真
boolean a = true;
boolean b = false;
System.out.println("a && b: "+(a&&b)); //false
System.out.println("a || b: "+(a||b)); //true
System.out.println("!(a && b): "+!(a&&b)); //true
短路运算
int c = 5;
boolean d = (c<4)&&(c++<4); //没有执行(c++<4)
System.out.println(d); //false
System.out.println(c); //5
boolean e = (c>4)||(c++<4); //没有执行(c++<4)
System.out.println(e); //false
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*8最快
/*
0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4
0000 1000 8
0001 0000 16
*/
//移位操作
System.out.println(2<<3); //2*8=16
运算符拓展
public static void main(String[] args) {
int a = 10;
int b = 20;
a+=b; //a = a+b
a-=b; //a = a-b
System.out.println(a); //10
System.out.println(a+b); //30
}
字符串连接符
public static void main(String[] args) {
int a = 10;
int b = 20;
//字符串连接符 + ,String
System.out.println(""+a+b); //1020
System.out.println(a+b+""); //30
}
三元运算符
x ? y : z
如果为x==true,则结果为y,否则为z
public static void main(String[] args) {
int score = 80;
String type = score<60?"不及格":"及格";
System.out.println(type); //及格
}
运算符优先级
包机制
本质为文件夹
一般利用公司域名倒置作为包名:com.yuki.www
package com.yuki.operator; //包名
import com.yuki.base.Deom02; //导入包
import com.yuki.base.*; //导入该包下所有的类 通配符
package com.yuki.base;
//类注释
/**
* @author Yuki
* @version 1.0
* @since 1.8
*/
public class Doc {
String name;
//方法注释
/**
* @author Yuki
* @param name
* @return
* @throws Exception
*/
public String test(String name) throws Exception{
return name;
}
//通过命令行
//通过IDEA生成JavaDoc文档!
}
通过命令行生成JavaDoc文档:
- 打开需要生产类文档的文件目录
- 在该文件夹下进入命令行窗口
- 输入
即可生成Doc.java的JavaDoc帮助文档javadoc -encoding UTF-8 -charset UTF-8 Doc.java
- 点击index.html即可在浏览器中查看