变量
顾名思义,变量 就是可以变化的量。Java是一种强类型语言,每个变量都必须 声明其类型。Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和 作用域。
type varName [=value] [{,varName[=value]}];
// 数据类型 变量名 = 值;可以使用逗号隔开来声明多个同类型变量,但不建议。
注意事项:
- 每个变量都有类型,类型可以是 基本类型,也可以是 引用类型。
- 变量名必须是 合法的标识符。
- 变量声明是一条完整的语句,因此每一个声明都必须以分号结束。
变量作用域
- 类变量
- 实例变量
- 局部变量
public class Demo5 {
// 类变量 static:从属于类
static double salary = 2500;
// 实例变量:从属于对象,类的里面,方法的外面
// 如果其不自行初始化,则为这个类型的默认值 int:0 float(double):0.0
// 布尔值:默认是false
// 除了基本类型,其余的默认值都是null
String name;
int age;
public static void main(String[] args){
int a, b, c;
String name = "Ming";
char x = 'M';
double d = 1.23;
// 属性:变量
// 局部变量:必须声明和初始化值
int i = 10;
System.out.println(i);
// 变量类型 变量名称 = new 类名称();
Demo5 demo5 = new Demo5();
System.out.println(demo5.name); // null
System.out.println(demo5.age); // 0
// 类变量 static:从属于类
System.out.println(salary); // 不需要创建对象,可以直接在此类中使用
}
// 其他方法
public void add(){
// System.out.println(i); // i是局部变量,在其他方法无法直接使用
}
}
常量
常量(Constant):初始化后不能在改变值!不会变动的值。
所谓常量可以理解为一种特殊的变量,它的值一旦被设定后,在程序运行过程中 不允许被改变。
// 类变量 static:从属于类
常量名一般使用 大写字符。
public class Demo6 {
// 修饰符不存在先后顺序
static final double PI = 3.14; // 命名大写
final static double PI_ = 3.14;
public static void main(String[] args) {
System.out.println(PI);
System.out.println(PI_);
}
}
变量的命名规划
- 所有变量、方法、类名:见名知意
- 类成员变量:首字母小写和驼峰原则:monthSalary 除了第一个单词以外,后面的单词首字母大写
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线:MAX_VALUE
- 类名:首字母大写和驼峰原则:Main,Demo,GoodMan
- 方法名:首字母小写和驼峰原则:add(), addSalary()
运算符
Java语言支持如下运算符:

二元运算符
package Base;
public class Demo7 {
public static void main(String[] args) {
// 二元运算符(+, -, *, /, %)
int a = 10;
int b = 20;
int yu = 3;
System.out.println(a+b); // 30
System.out.println(a–b); // -10
System.out.println(a*b); // 200
System.out.println(a/b); // 0, int自动取整
System.out.println(a/(double)b); // 0.5
System.out.println(a%yu); // 取余,1
System.out.println("===================================");
long c = 123123213123213L;
int d = 123;
short e = 10;
byte f = 8;
System.out.println(c+d+e+f); // 123123213123354
System.out.println(getType(c+d+e+f)); // class java.lang.Long
System.out.println(d+e+f); // 141
System.out.println(getType(d+e+f)); // class java.lang.Integer
System.out.println(e+f); // 18
System.out.println(getType(e+f)); // class java.lang.Integer
System.out.println("===================================");
// 关系运算符返回的结果:true/false boolean
// 常和条件、循环语句结合使用
int num1 = 10;
int num2 = 20;
System.out.println(num1>num2); // false
System.out.println(num1<num2); // true
System.out.println(num1==num2); // false
System.out.println(num1!=num2); // true
}
public static String getType(Object a){
return a.getClass().toString();
}
}
注:这是 Java 算术运算的 隐式类型提升规则:byte、short、char 这类长度小于 int 的整数类型,参与算术运算时会自动先提升为 int 再计算,因此即使只有 short 和 byte 相加,二者运算前都已转为 int,最终结果就是 int 类型;若表达式中出现范围更大的 long,所有操作数会进一步提升为 long,结果也对应为 long 类型,这是 Java 语言的硬性规定,底层对应 JVM 字节码仅提供 int 及以上整型运算指令的设计。
一元运算符
public class Demo8 {
public static void main(String[] args) {
// ++ — 自加 自减 一元运算符
int a = 3;
int b = a++; // 先赋值,再自加
System.out.println(a); // 4
int c = ++a; // 先自加,再赋值
System.out.println(a); // 5
System.out.println(b); // 3
System.out.println(c); // 5
// 幂运算 2^3 2*2*2=8 很多运算,我们使用一些工具类来操作,后续会学习;
System.out.println(Math.pow(2, 3)); // 8.0
System.out.println(Math.pow(3, 2)); // 9.0
}
}
逻辑运算符和位运算符
public class Demo9 {
public static void main(String[] args) {
// 逻辑运算符 与(&&, and) 或(||, or) 非(!, 取反)
boolean a = true;
boolean b = false;
System.out.println("a && b:" + (a && b)); // false, 1 1->1
System.out.println("a || b:" + (a || b)); // true, 0 0->0
System.out.println("!(a && b):" + (!(a && b))); // true 1->0 0->1
// 短路运算
int c = 5;
boolean d = (c<4)&&(c++<4);
System.out.println(d); // false
System.out.println(c); // 5, &&前面为false,不执行后面的语句
// 位运算符
/*
A = 0011 1100
B = 0000 1101
A & B 0000 1100
A | B 0011 1101
A ^ B 0011 0001 异或(1 1->0 0 0->0)
~B 1111 0010
*/
// 2*8=16怎么运算最快? 2*2*2*2
// 二进制运算效率极高
// << 二进制左移 *2
// >> 二进制右移 /2
System.out.println(2<<3); // 左移三位,16
/*
2: 0000 0010
16: 0001 0000
*/
}
}
Java 中的 二进制左(右)移运算符<<(>>),属于效率极高的位运算:它会将运算符左侧数值的二进制补码整体向左移动右侧指定的位数,移出的高位直接丢弃,低位统一补 0;在数值不溢出的前提下,每左移 1 位等价于原数乘以 2。代码里2<<3就是把十进制 2(二进制10)左移 3 位,得到二进制10000,对应十进制 16,等价于 2×2³=2×8,因为位运算直接由 CPU 底层指令执行,无需复杂的乘法运算流程,所以是计算 2 的幂次乘法的高效写法。
拓展赋值运算符和三元运算符
public class Demo10 {
public static void main(String[] args) {
int a = 10;
int b = 20;
a+=b; // a = a+b, 30
a-=b; // a = a-b, -10
// 字符串连接符 +, String
System.out.println(a+b); // 30
System.out.println(""+a+b); // 1020
System.out.println(a+b+""); // 30
// x ? y : z;
// if x == true x = y else x = z
int score = 80;
String type = score < 60 ? "不及格" : "及格"; // 必须掌握,非常常用
// if
System.out.println(type);
}
}
注:Java 中的 + 运算符遵循左结合规则,从左向右依次运算,所有操作数均为数值类型时执行算术加法,一旦遇到字符串类型就切换为字符串拼接逻辑,将后续操作数转为字符串后拼接。
包机制
为了更好地组织类,Java提供了包机制,用于区别类名的命名空间。在不同的包可以有同名类,本质为一个“文件夹”。
包语句的语法格式为:
package pkg1[. pkg2[. pkg3...]];
**一般利用公司域名倒置作为包名; ** www.baidu.com com.baidu.www
如若在IntelliJ IDEA新建包,未产生类似于树状结构,可以参考如图所示步骤,取消勾选Compact对应选项即可。

为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包。使用 “import” 语句可以完成此功能。
import package1[.package...].(classname|*);
除了Java已经写好的包中类,你也可以导入你自己写的包。
强烈建议可以去读一读 阿里巴巴开发手册,规范自己的代码编写,养成良好的编程习惯。
JavaDoc
javadoc命令是用来生成自己API文档的。
可以查看JDK帮助文档,来了解Java相关的API。Overview (Java Platform SE 8 )
参数信息:
- @author 作者名
- @version 版本号
- @since 指明需要最早使用的jdk版本
- @param 参数名
- @return 返回值情况
- @throws 异常抛出情况
package com.ming.base;
/**
* @author Ming
* @version 1.0
* @since 1.8
*/
public class Doc {
String name;
/**
* @author Ming
* @param name
* @return
* @throws Exception
*/
public String test(String name) throws Exception{
return name;
}
}
运行javadoc命令生成自己的API文档.


点开生成的index.html可以查看自己的API文档。

学会查找使用IDEA生产JavaDoc文档! 面向百度编程,面向AI编程。


打开对应的输出目录,点开index.html,查看自己的JavaDoc文档。




