Java基础语法
注释(好习惯)BAT
-
单行注释
-
多行注释
-
文档注释
public class HelloWorld { public static void main(String[] args) { //单行注释 //输出一个Hello World System.out.println("Hello World"); /* 多行注释 可注释一段文字 */ /** * Java doc */ } }
标识符 关键字
数据类型
String 不是关键字,是类
拓展
-
整数拓展
-
浮点数拓展
- float 有限 离散 舍入误差 大约 接近但不等于 (最好完全避免使用浮点数进行比较)
- 强制转换 (所有的字符本质还是数字) Unicode 2字节 0-65536 U0000-UFFFF
-
转义字符
- \t 制表符
- \n 换行
-
布尔值扩展
-
boolean flag = true;
if (flag == true){} //新手
if(flag){} //老手
-
-
less is more!
类型转换
-
强制类型转换
-
自动类型转换
public class Demo05 { public static void main(String[] args) { int i = 128; byte b = (byte) i ; //内存溢出 // 强制转换 (类型)变量名 高----低 // 自动转换 低----高 System.out.println(i); System.out.println(b); /* 注意点: 1. 不能对布尔值进行转换 2. 不能把对象类型转换为不相干的类型 3. 高容量到底容量转换时 要强制转换 4. 转换时可能会存在内存溢出,或者精度问题 */ System.out.println("================="); System.out.println((int)23.7); //23 System.out.println((int)-45.89f);//-45 System.out.println("================="); char c = 'a'; int d = c + 1; System.out.println(d); System.out.println((char)d); } }
public class Demo06 { public static void main(String[] args) { //操作数比较大的时候,注意溢出问题 //JDK新特性,数字之间可以用下划线分割 int money = 10_0000_0000; int years = 20; int total1 = money*years; //-1474836480, 计算的时候溢出了 long total2 = money*years; //默认是int 转换之前已经存在问题了 long total3 = money*((long)years); //先把一个数转换为long System.out.println(total1); System.out.println(total2); System.out.println(total3); //L l 尽量用大写字母表示 小写的容易引起误会 } }
变量 常量
- 注意事项
- 每个变量都有类型 类型可以是基本类型 也可以是引用类型
- 变量名必须是合法的标识符
- 变量声明是一条完整的语句,因此每一个声明都必须以分号结束
类变量
- static
实列变量
局部变量
- 在方法内
public class Demo08 {
//类变量 static
static double salary = 2500;
//属性(变量)
//实例变量:从属于对象,如果不进行初始化,这个类型的默认值 0 0.0
// 布尔默认值是 false
// 除了基本类型,其余默认值都是Null
String name;
int age;
static {
}
//main方法
public static void main(String[] args) {
//局部变量:必须声明和初始化值
int i = 10;
System.out.println(i);
//变量类型 变量名字 = new Demo08();
Demo08 demo08 = new Demo08();
System.out.println(demo08.age);
System.out.println(demo08.name);
//类变量 static
System.out.println(salary);
}
//其他方法
public void add(){
}
}
常量
- final
public class Demo09 {
//修饰符 不存在先后顺序
static final double PI = 3.14;
//final static double PI = 3.14;
public static void main(String[] args) {
System.out.println(PI);
}
}
运算符
package Operator;
public class Demo01 {
public static void main(String[] args) {
// 二元运算符
// Ctrl + d : 复制当前行到下一行
int a = 10;
int b = 20;
int c = 25;
int d = 25;
System.out.println(a + b);
System.out.println(a - b);
System.out.println(a * b);
System.out.println(a / (double)b);
}
}
package Operator;
public class Demo01 {
public static void main(String[] args) {
// 二元运算符
// Ctrl + d : 复制当前行到下一行
int a = 10;
int b = 20;
int c = 25;
int d = 25;
System.out.println(a + b);
System.out.println(a - b);
System.out.println(a * b);
System.out.println(a / (double)b);
//int 不能转为 string
}
}
- 关系运算符
package Operator;
public class Demo03 {
public static void main(String[] args) {
//关系运算符返回结果为布尔值
int a = 10;
int b = 20;
int c = 21;
System.out.println(a>b);
System.out.println(a<b);
System.out.println(a==b);
System.out.println(a!=b);
System.out.println(c%a); // 取余 模运算
}
}
- 自增自减运算符 初识Math类
package Operator;
public class Demo04 {
public static void main(String[] args) {
//++ -- 自增 自减 (一元运算符)
int a = 3;
int b = a++;
// a++ a = a + 1; 先赋值 再自增
int c = ++a;
// ++a a = a + 1; 先自增 再赋值
System.out.println(a);
System.out.println(b);
System.out.println(c);
//幂运算 2^3 很多运算,我们会使用一些工具类来操作
double pow = Math.pow(3,2);
System.out.println(pow);
}
}
- 逻辑运算符
package Operator;
//逻辑运算符
public class Demo05 {
public static void main(String[] args) {
// 与(and) 或(or) 非(取反)
boolean a = true;
boolean b = false;
System.out.println("a && b:"+(a && b));//逻辑与运算:两个变量都为真,结果才为真
System.out.println("a || b:"+(a || b));//逻辑或运算:两个变量都为假,结果才为假
System.out.println("!(a && b:"+!(a && b));//变量为真结果为假 变量为假结果为真
//短路运算
int c = 5;
boolean d = (c<4)&&(c++<4);
System.out.println(d);
System.out.println(c);
}
}
- 位运算符
package Operator;
public class Demo06 {
public static void main(String[] args) {
/*
A = 0011 1100
B = 0000 1101
A&B 0000 1100
A|B 0011 1101
A^B 0011 0001
~B 1111 0010
2*8 怎么运算最快 2*2*2*2
位运算 效率极高!
<<左移 乘2
>>右移 除2
0000 0000 0
0000 0010 2
0001 0000 16
*/
System.out.println(2<<3);
}
}
条件运算符
package Operator;
public class Demo07 {
public static void main(String[] args) {
int a = 10;
int b = 20;
a+=b;// a = a + b
a-=b;
System.out.println(a);
//字符串连接符 + , string
System.out.println(""+a+b);//1020
System.out.println(a+b+"");//30
}
}
扩展运算符(三元运算符)
package Operator;
import com.sun.javafx.css.CssError;
public class Demo08 {
public static void main(String[] args) {
// x ? y : z
//如果x==true 则结果为y 否则结果为z
int score = 80;
String tybe = score<60? "不及格":"及格";//必须掌握
//if
System.out.println(tybe);
}
}
优先级()
包机制
包的本质就是文件夹
- 一般利用公式域名倒置作为包名
- .* 会导入包下所有的类
JavaDoc
- 生成一个帮助文档API
- 参数信息
- @author 作者
- @version 版本号
- @since 指明需要最早使用的jdk版本
- @param 参数名
- @return 返回值情况
- @throws 异常抛出情况
package com.YuZhang.Operator.Base;
/**
* @author YuZhang
* @version 1.0
* @since 1.8
*/
public class Doc {
String name;
/**
* @author
* @param name
* @return
* @throws Exception
*/
public String text(String name) throws Exception{
return name;
}
}
- 可加到方法上 也可加到类上