源自视频课程的本人总结,推荐课程链接
注释
- 单行注释:“//”
- 多行注释:“/* */”
- 文档注释:“/** */”
标识符
- 关键字
- Java中所有的类名、方法名和变量名都需要命名
- 标识符要求:
- 以所有英文字母(A-Z或a-z)、美元符号($)或下划线(_)开头
- 不能以关键字开头
- 标识符对大小写是敏感的
- 可以用中文命名,但不建议
数据类型
Java是强类型语言,要求所有的变量要定义才能使用。
基本数据类型(8个)
代码示例:
public class DataType {
public static void main(String[] args) {
//byte
byte a = 10;
//short
short b = 1000;
//int
int c = 100000000;
//long
long d = 10L; //long类型后面通常加L
//float
float e = 0.000001F; // float类型后面必须加F,区别于double
//double
double f = 0.000001;
//字符
char name = 'a';
//字符串
String name1 = "sdalfas"; //字符只有一个字符,字符串可以有多个;字符位单引号,字符串为双引号
//bool
boolean g = true;
System.out.println( g);
}
}
拓展
- 整数的进制表示:二进制0b,十进制,八进制0,十六进制0x
public class Data1 {
public static void main(String[] args) {
int i = 10;
int i1 = 010; //八进制
int i2 = 0x10; //十六进制
int i3 = 0b10; //二进制
System.out.println(i); //10
System.out.println(i1); //8
System.out.println(i2); //16
System.out.println(i3); //2
}
}
- 浮点数:float和double,最好完全避免浮点数比较
public class Data2 {
public static void main(String[] args) {
//1,2情况出现原因:float是有限离散的,存在舍入误差
//最好完全避免使用浮点数进行比较
//1.结果看到的一致,实际不一致
float f = 0.1f; //0.1
double d = 1.0/10; //0.1
System.out.println(d==f); //false
System.out.println(d); //0,1
System.out.println(f); //0.1
//2.看到结果不一致,实际一致
float c1 = 34287374f;
float c2 = c1 + 1;
System.out.println("==============================");
System.out.println(c1==c2); //true
System.out.println(c1); //3.4287376E7
System.out.println(c2); //3.4287376E7
}
}
- 字符:所有字符本质都是数字
public class Data3 {
public static void main(String[] args) {
char a = 'a';
char b = '中';
System.out.println(a);
System.out.println((int)a); //强制转换 97
System.out.println(b);
System.out.println((int)b); // 20013
//编码
char c = '\u0061';
System.out.println(c); // a
}
}
- 转义字符的使用
public class Data4 {
public static void main(String[] args) {
String c1 = "Hello";
String c2 = "World";
System.out.println(c1+"\t"+c2); // \t tab制表符
System.out.println("Hello\nWorld"); // \n换行
}
}
类型转换
- 数据类型由低到高
- 运算时,需转换为同一类型
- 强制类型转换:由高类型–>低类型 (类型)变量名
- 自动类型转换:低–>高
public class Demo01 {
public static void main(String[] args) {
int a = 66;
char c = (char)a; //强制类型转换:由高到低
double b = a; //自动类型转换
System.out.printf("%d %f %c",a,b,c); //以空格输出 66 66.00000 B
}
}
- 注意: ①布尔类型不能进行转换;②转换时可能存在内存溢出,或者精度问题
public class Demo02 {
public static void main(String[] args) {
int i = 128;
byte b = (byte)i; //内存溢出
System.out.printf("%d\n%d\n",i,b); //128 -128
System.out.println("============");
//精度问题
System.out.println((int)23.8); //23
System.out.println((int)-45.238f); //-45
}
}
- 大数计算,注意溢出导致计算错误问题
public class Demo04{
public static void main(String[] args) {
// 溢出问题
// JDK7新特性,数字之间可以用下划线分割,不影响结果
int money = 10_0000_0000;
System.out.println(money);
int year = 10;
int total = year*money;
System.out.println("=========");
System.out.println(total); //1410065408
long total2 = year*money; //结果未正确,原因,转换类型前已溢出
System.out.println("=========");
System.out.println(total2); //1410065408
long total3 = (long)money*year; //先把其中一个做类型转换
System.out.println("=========");
System.out.println(total3); //10000000000 正确
}
}
变量与常量
- 格式:数据类型 变量名=值; //可以用逗号隔开来声明多个同类型变量(不推荐)
public class Demo05{
public static void main(String[] args) {
int a = 1;
char c = 'A';
String b = "sdhkj";
// int a,=1,b=2,c=3; (不推荐)
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}
- 变量名要是合法的标识符
- 变量作用域:类变量、实例变量和局部变量
public class Demo06{
// 类变量:static
static double salary = 25000;
// 实例变量:从属于对象,可以先不初始化
/*默认值:
1.数值:0 0.0
2.布尔值:false
3.除了基本类型,其余的类型默认值都是null
*/
String name;
int age;
public static void main(String[] args) {
// 局部变量:必须声明和初始化值
int i = 0; //i为局部变量
System.out.println(i);
//实例变量的引用(快捷键:new Demo06(); Alt+回车)
//格式:变量类型 变量名 = new 类
Demo06 demo06 = new Demo06();
System.out.println(demo06.name); //null(默认值)
System.out.println(demo06.age); //0
//类变量引用
System.out.println(salary); //25000.0
}
}
- 常量:初始化后不能再改变的值;常量名通常大写
public class Demo07{
//修饰符不分前后顺序,static和final可互换
//final 数据类型 变量名=值;
static final double IP = 3.14;
public static void main(String[] args) {
System.out.println(IP);
}
}
- 变量的命名规范:
- 所有变量、方法、类名都要见名知意
- 类成员变量、局部变量和方法名遵循首字母小写和驼峰原则;eg.monthAverageSalary
- 常量大写字母和下划线;MAX_VALUE
- 类名首字母大写和驼峰原则;(新建class时的名即为类名)
运算符
- Java所支持的运算符:
示例1:二元算数运算符
package operator; //包
public class Demo01 {
public static void main(String[] args) {
//算术运算符
double IP = 3.14;
Long a = 10347829L;
int b = 20;
short c = 10;
byte d = 8;
System.out.println(IP+a+b+c+d); //Double 数据类型的高低
System.out.println(a+b+c+d); //Long
System.out.println(b+c+d); //int
System.out.println(c+d); //18
//取余,模运算
System.out.println(c%b); //10
}
}
示例2:二元关系运算符
package operator;
public class Demo02 {
public static void main(String[] args) {
// 关系运算符,结果返回布尔值,true false
int a = 10;
int b = 20;
System.out.println(a>b); //false
System.out.println(a<b); //true
System.out.println(a==b); //false
System.out.println(a!=b); //true
}
}
示例3:自增自减和Math工具
package operator;
public class Demo03{
public static void main(String[] args) {
int a = 1;
int b = 2;
int c = 3;
b = a++; //赋值之后,自加1 b=a=1
// a = a + 1 执行完此句后 a=2
// a = a + 1 执行完此句后 a=3
c = ++a; //赋值之前,自加1 c=a=3
System.out.println(a); //3
System.out.println(b); //1
System.out.println(c); //3
// 幂运算等很多运算,使用工具操作
double pow = Math.pow(2, 3); //2^3=8
System.out.println(pow); //8.0
}
}
示例4:逻辑运算符-与(&&)、或(||)、非(!)
package operator;
public class Demo04{
public static void main(String[] args) {
// 与(and)、或(or)、非(取反)
boolean a = true;
boolean b = false;
System.out.println("a&&b:"+ (a&&b)); //两个变量都为真,则结果为真true
System.out.println("a||b:"+ (a||b)); //两个变量其中一个为真,则结果为真true
System.out.println("!(a&&b):"+ !(a&&b)); //真则假,假则真
//短路运算,“与”中存在
int c = 5;
System.out.println(b&&(c++<4)); // 与运算中前一个b已为假,因此不做与后的判断,即为短路
System.out.println(c); //5 c未c++
}
}
示例5:位运算-“与”(&)、“或”(|)、“异或”(^)、“非”(~)、“左移”(<<相当于*2)、“右移”(>>相当于/2)
package operator;
public class Demo05{
public static void main(String[] args) {
/*
A = 0011 0001
B = 0000 1101
=========================
A&B = 0000 0001 “与”:0&0=0,1&1=1,0&1=0
A|B = 0011 1101 ”或“:有1就为1,0|0=0,1|1=1,1|0=1
A^B = 1100 0011 "异或“:相同为0,不同为1
~B = 1111 0010 “非”:取反
*/
//位运算效率
//计算2*8=16
System.out.println(2<<3); //16
}
}
示例6:
package operator;
public class Demo06{
public static void main(String[] args) {
// +=、-=、*=、/=
int a = 10;
int b = 20;
a += b; //a = a+1
System.out.println(a); //30
//字符串连接,"+"之前出现String类型时,“+”之后自动变为字符串
System.out.println(""+a+b); //3020
System.out.println(a+b+""); //50
}
}
示例7:三元运算符,条件运算符—> x?y:z(如果x==true,则结果为y,否则为z)
package operator;
public class Demo07{
public static void main(String[] args) {
int score = 59;
String type = (score > 60) ?"及格":"不及格";
System.out.println(type);
}
}
包机制
包机制可以理解为文件夹,命名时可以以公司域名导致:com.Zhang.xxx
JavaDoc(文档注释)
示例:
package operator;
/** 类注释
* @author zhongguo
* @version 1.0
* @since 1.8
*/
public class Doc{
String name;
/** 方法注释
*
* @param name
* @return
* @throws Exception
*/
public String test(String name) throws Exception{
return name;
}
}
生成JavaDoc文档
- 命令行生成:javadoc 参数 Java文件
- 找到待生成JavaDoc文档的文件位置
- 通过cmd命令进入
- 生成javadoc文档命令
- 查看生成的index.html文件
- IDEA生成javadoc文档(百度)