JavaSE基础语法
标识符和关键字
关键字
- Java所有的组成部分都需要名字。类名、变量以及方法名都被称为标识符。
标识符注意点
-
所有的标识符都应该以字母、美元符$、或者下划线 _ 开始。
-
首字符之后可以是字母、美元符$、或者下划线 _或数字的任何字符组成。
-
不能试用关键字作为变量名或方法名。
-
标识符是大小写敏感的
-
可以用中文或者拼音,但不建议
public static void main(String[] args) { // 大小写十分敏感 String Name = "灰灰"; String name = "灰灰"; String _name = "灰灰"; String $name = "灰灰"; String _1_name = "灰灰"; // 不合法命名 /* String 123abc = "灰灰"; String -abc = "灰灰"; String #abc = "灰灰"; */ }
数据类型
-
强类型语言
- 要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用
-
Java的数据类型分为两大类
-
基本类型(Primitive type)
-
引用类型(Reference type)
-
在这里插入图片描述
-
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.14159265358; // 字符 char name = '灰'; // 字符串 String不是关键字,是一个类 String name2 = "灰灰"; // 布尔值 boolean flag = true; boolean flag2 = false; }
-
类型转换
由于Java是强类型语言,所以要进行有些运算时要用到类型转换
运算时,不同类型的数据先转化为同一类型,然后进行运算
按照容量高低如下排序
低 ----------------------------------------------------------> 高
byte,short,char --> int --> long --> float --> double
-
强制类型转换
-
// 强制转换:(类型)变量名 高---->低 public static void main(String[] args) { int i = 120; byte b = (byte)i; System.out.println(i); // 120 System.out.println(b); // 120 }
-
-
自动类型转换
-
public static void main(String[] args) { // 低---->高 int i = 120; double d = i; System.out.println(i); // 120 System.out.println(d); // 120.0 }
-
-
注意点:
1. 不能对布尔值进行转换 2. 不能把对象类型转换为不相干的类型 3. 高容量转换到低容量时,强制转换 4. 转换时可能存在内存溢出/精度问题
-
精度问题:浮点数转换整数直接取整数部分,不会四舍五入
-
System.out.println((int)23.9); // 23 System.out.println((int)-45.89F); // -45
-
溢出问题:操作比较大的数的时候,注意溢出问题
-
public static void main(String[] args) { // JDK7新特性,数字可以用下划线分割 int money = 10_0000_0000; int years = 20; int total = money*years; // -1474839480,计算时溢出了 long total2 = money*years; // 默认是int,转换之前已经存在问题 long total3 = money*((long)years); System.out.println(total3); // 20000000000√ }
-
变量
-
Java时强类型语言,每个变量必须声明其类型
-
Java变量时程序中最基本的存储单元,其要素包括:变量名,变量类型和作用域。
-
int a = 10; // 数据类型 变量名 = 值; // 可以用逗号隔开生命多个同来型变量,但不建议
-
注意事项:
- 每个变量都有类型,类型可以是基本赖兴,也可以是引用类型。
- 变量名必须是合法标识符。
- 变量声明时一条完整语句,因此每一个生命都必须以分号结束。
变量作用域
-
类变量
-
实例变量
-
局部变量
-
public class Demo07 { // 类变量 static:从属于类 static double salary = 2500; // 实例变量:从属于对象;如果不自行初始化,自动设定对应类型默认值 // 布尔值:默认false 除了基本类型,其他默认值都是null String name; int age; // main方法 public static void main(String[] args) { // 局部变量:必须声明和初始化值 // 只在当前的{}内可用 int i = 10; System.out.println(i); // 调用实例变量 // 变量类型 变量名字 = new Demo07(); Demo07 demo07 = new Demo07(); System.out.println(demo07.age); // 0 System.out.println(demo07.name); // null // 调用类变量 System.out.println(salary); } }
-
常量
-
初始化后不能再改变值
-
可以将常量理解为一种特殊的量,它的值被设定之后,在程序运行过程中不允许被改变。
-
final 常量名 = 值; final double PI = 3.14;
-
-
常量名一般用大写字符
-
public class Demo08 { // static,final是修饰符,不存在先后顺序 static final double PI = 3.14; public static void main(String[] args) { System.out.println(PI); } }
-
变量命名规范
- 所有变量、方法、类名:见名知意
- 类成员变量:首字母小写和驼峰原则:monthSalary
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线:MAX_VALUE
- 类名:首字母大写和驼峰原则:FirstName
- 方法名:首字母小写和驼峰原则:run(),runRun()
运算符
- Java语言支持以下运算符
- 算术运算符:+,-,*,/,%,++,–
- 赋值运算符:=
- 关系运算符:>,<,>=,<=,==,!= instanceof
- 逻辑运算符:&&,||,!
- 位运算符: &,|,^,~,>>,<<,>>>
- 条件运算符:?:
- 扩展赋值运算符:+=,-=,*=,/=
算数运算符
-
二元运算符(+,-,*,/,%)
-
public static void main(String[] args) { // 二元运算符 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/b); // 0 int类型取整 System.out.println(a/(double)b); // 0.5 // 取余,模运算 System.out.println(c%a); // c/a=2...5 }
-
-
一元运算符(++,–)
-
public static void main(String[] args) { // ++ -- 自增,自减 int a = 3; int b = a++; // 先把a赋值给b,在进行自增操作 // a++ a = a+1 int c = ++a; // 先进行自增操作,再将自增结果赋值给c System.out.println(a); // 5 System.out.println(b); // 3 System.out.println(c); // 5 }
-
关系运算符
-
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 }
逻辑运算符
-
public static void main(String[] args) { // 与(and) 或(or) 非(取反) boolean a = true; boolean b = false; // 逻辑与运算:两个都为真,结果才为真 System.out.println(a && b); //false // 逻辑或运算:两个变量有一个为真,则结果为真 System.out.println(a || b); //true // 逻辑非运算:真变假,假变真 System.out.println(!(a && b)); //true // 短路运算 // && 左边为真,右边执行;左边为假,右边不执行 // || 左边为假,右边执行;左边为真,右边不执行 int c = 5; boolean d = (c<4)&&(c++<4); System.out.println(d); // false System.out.println(c); // 5 }
位运算符
-
public static void main(String[] args) { /* A = 0011 1100 B = 0000 1101 ------------------ A&B = 0000 1100 与 对应位都是1是1,否则为0 A|B = 0011 1101 或 对应位都是0为0,都是1为1,有一个1为1 A^B = 0011 0001 异或 对应位相同为0,不同为1 ~B = 1111 0010 取反 0变1,1变0 */ /* <<左移 >>右移 << *2 >> /2 0000 0000 0 0000 0001 1 0000 0010 2 0000 0011 3 0000 0100 4 0000 1000 8 0001 0000 0 */ System.out.println(2<<3); // 16 }
条件运算符/三元运算符
-
public static void main(String[] args) { // x ? y : z // 如果x==true,则结果为y,否则结果为z int score = 80; String type = score <60 ? "不及格" : "及格"; System.out.println(type); }
扩展赋值运算符
-
public static void main(String[] args) { int a = 10; int b = 20; a += b; // a = a+b System.out.println(a); // 30 a -= b; // a = a-b System.out.println(a); // 10 为什么不是-10,在这次运算前a已经变成30 }
包机制
-
包语句语法格式为
-
package pkg1[.pkg2[.pkg3...]];
-
-
一般利用公司域名倒置作为包名; com.baidu.www
-
在一个包中使用另一个包的成员,需要在程序中明确导入要使用的包。使用"import"语句可完成此功能
-
// 使用*会导入该包下的所有类 import package1[.package2...].(classname|*);
-
JavaDoc
-
参数信息
- @author 作者名
- @version 版本号
- @since 指明需要最早使用的jdk版本
- @param 参数名
- @return 返回值情况
- @throws 异常抛出情况
-
/** * @author Huihui 作者名 * @version 1.0 版本号 * @since 1.8 指明需要最早使用的jdk版本 */ public class Doc { String name; /** * @param name 参数名 * @return 返回值情况 * @throws Exception 异常抛出情况 */ public String test(String name) throws Exception{ return name; } // 命令行生成javadoc文件: javadoc 参数 java文件 }
-
使用命令行生成文档
-
-
生成成功,打开目录中的index.html便能看到生成的文档
-
-
使用IDEA生成文档
- 在IDEA中选择Tools(工具),然后选择Generate JavaDoc(生成javadoc)
-
配置各种参数