Java基础知识
Java语法基础
2026.01.09
注释
Java注释一共分为三种:
-
单行注释
//就是如此啦 //单行注释只能注释一行文字 -
多行注释
/* 啦啦啦啦啦啦啦 库里库里库里库里 多行注释可以注释一段文字 */ -
文档注释
/** @Author flora2 */
敲代码的时候一定一定一定要加注释!
万一自己哪一天就看不懂自己代码了呢()
标识符
常见关键字:

起变量名的时候就不要再用这些词了口牙!!!
标识符 只能 以字母,下划线_,以及美元单位$开头!!
开头之后可以是任何字符,但是特殊符号尽量不要用
标识符是大小写敏感的,并且不建议使用中文或者拼音起变量名
数据类型
Java是一种强类型语言,变量必须先定义后使用
例如:
public class demo01 {
static void main(String[] args) {
String a;
System.out.println(a);
}
}
//a变量没有被定义,java会报错,无法进行输出
Java数据类型分为两大类
-
基本类型 常用
public class demo01 { static void main(String[] args) { int num1=10; byte num2=122; short num3=14; long num4=30L; //long类型要在赋的值后面加一个L以表示这是long类型变量 float num5=4.12F; //float类型要在赋的值后面加一个F以表示这是float类型变量 double num6=13.14; char name='a'; //char是一个字符!不是字符串! boolean flag=true; //boolean flag=false; //布尔值只用来表示是或非 } } -
引用类型
除了基本数据类型之外的都是引用类型。
拓展()
public class demo02 {
static void main(String[] args) {
//整数拓展: 进制 二进制0b 十进制 八进制0 十六进制0x
int num1=10;
int num2=010; //表示八进制
int num3=0x10; //表示十六进制
System.out.println(num1);
System.out.println(num2);
System.out.println(num3);
//浮点数扩展: 浮点能表示的值是有限的,是离散的,有舍入误差
float n1=0.1f;
double n2=1.0/10;
System.out.println(n1==n2);//false
float n3=123456789f;
float n4=n3+1;
System.out.println(n3==n4);//true
//尽量避免使用浮点数进行比较
//字符拓展
char c1='a';
char c2='中';
System.out.println((int)c1);
//强制类型转换
System.out.println((int)c2);
//所有的字符本质还是数字
//转义符
//例如 \t制表符
System.out.println("Hello\tWorld");//Hello World
}
}
类型转换
public class demo03 {
static void main(String[] args) {
int i=10;
byte b=(byte)i;//在目标变量前面加一个括号,括号内写要强制转换的类型
//注意转换类型不要数据溢出
//强制转换是由高到低类型的转换
//类型由低到高转换是自动转换:
int a=1;
double c=a;
/*
* 注意点:
*1.不能对布尔值进行转换
*2.不能把对象类型转换为不相干的类型
*3.把高容量转换为低容量的时候是强制转换
*4.转换的时候可能存在内存溢出或精度问题
* byte,short,char->int->long->float->double
* */
}
}
public class demo04 {
static void main(String[] args) {
//操作比较大的数时注意浮点问题
//数字之间可以使用下划线分割
int money=10_0000_0000;
System.out.println(money);
int year=20;
int total=money*year;
System.out.println(total);//-1474836480,计算的时候溢出了
long total1=money*((long)year);//先把一个数转换为long
System.out.println(total1);//20000000000
}
}
变量
public class demo05 {
//实例变量:从属于对象,相当于c的全局变量,自动初始化
//布尔值全局变量默认是false
//除了基本类型变量,其余默认值都是null
String name;
int age;
//类变量 static
static double salary=2000;
//main方法
static void main(String[] args) {
//局部变量:必须声明和初始化值
int a=10;
System.out.println(a);
//变量类型 变量名字(引用全局变量)
demo05 demo05=new demo05();
System.out.println(demo05.age);
//类变量 关键词static
//建议以后定义全局变量的时候都用static,方便!!
System.out.println(salary);
}
//其他方法
public void add(){
}
}
public class demo06 {
//所谓常量,就是定义后无法再被修改值的量,关键词final,变量名建议使用大写字母
//变量名前面的都是修饰符,修饰符不存在先后顺序
static final double PI=3.14;
static void main(String[] args) {
System.out.println(PI);
}
}
变量命名规范:

基本运算符及其运算
package operater;
public class demo01 {
static void main(String[] args) {
//二元运算
int a=10;
int b=13;
System.out.println(a+b);
//跟c语言一样,可以在输出语句内直接进行运算
System.out.println(a/(double)b);
//跟c语言一样,取整数部分;想要小数可以把其中一个变量强制转换成double类型
}
}
package operater;
public class Demo02 {
static void main(String[] args) {
long a=12345678L;
int b=10;
short c=12;
byte d=1;
System.out.println(a+b+c+d);//long
System.out.println(b+c+d);//int
System.out.println(c+d);//int
//运算中有long类型结果就是long类型,否则就是int类型
}
}
package operater;
public class Demo03 {
static void main(String[] args) {
//关系运算符返回的结果:true or false
int a=10;
int b=10;
System.out.println(a>b);//false
System.out.println(a<b);//false
System.out.println(a==b);//true
System.out.println(a!=b);//false
//自增自减运算符++,--,一元运算符,同c语言
int a1=3;
int b1=a1++;//先把a的值赋值给b,再进行a++
int c1=++a1;//先进行a++;再把值赋给c
System.out.println(a1);
System.out.println(b1);
System.out.println(c1);
//幂运算
double pow=Math.pow(2,3);//相当于c语言中的调用函数库
System.out.println(pow);
}
}
package operater;
public class Demo04 {
static void main(String[] args) {
//与 或 非(取反)
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
//注意这里的输出形式,和c语言有小差别
int c=5;
boolean d=(c<4)&&(c++<4);
System.out.println(d);//false
System.out.println(c);//5
//在进行逻辑与运算的时候,两个都为真才返回true,如果第一个条件就是假,那么将不再执行后面的语句
}
}
package operater;
public class demo05 {
static void main(String[] args) {
/*位运算
* A=0011 1100
* B=0000 1101
* 这里!你的!计算机导论!里面教的
* A&B=0000 1100(两位都是1,则结果为1,否则为0;)
* A|B=0011 1101(至少有一个1则结果为1,否则为0;)
* A^B=0011 0001(相同则为0,不同则为1;)
* ~B=1111 0010(取反)
*
* 位运算应用:2*8=16
* 左移:<< 相当于*2
* 右移:>> 相当于/2
* 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);//16
}
}
package operater;
public class Demo6 {
static void main(String[] args) {
int a=10;
int b=20;
a+=b;//a=a+b
System.out.println(a);
//字符串连接符 + ,String类型
//因为“”在前面,虽然是空的,但毕竟是字符串类型,所以会把另外两个变量也转换为字符串类型
System.out.println(""+a+b);//3020
//如果“”在后面,那么前面的变量运算依旧会被执行,不会转换类型
System.out.println(a+b+"");//50
//三元运算符 x?y:z 必须掌握
//如果 x==true,则返回y,否则返回z
int score=60;
String type= (score>=60)?"不挂科":"挂科";
System.out.println(type);//不挂科
}
}
包机制
包的本质就是文件夹
为了更好地组织类,Java提供了包机制,用于区别类名的命名空间
一般来说,包的命名方式是公司域名倒置()
例:域名www.baidu.com
包名:com.baidu.www
就像这样啦:
package com.flora.base
必须在代码首行,不可以去掉
有的时候要使用某一个包的成员,我们需要在Java程序中明确导入该包,使用import语句即可实现
//比如我们要引入一个Java自带的包内的成员Date
package com.flora.base;
import java.util.Date;
//当你需要导入一个包内的所有类的时候,可以用*代替
import com.flora.base.*;
注意 :import语句必须在包语句的下面,否则将会报错
JavaDoc
javadoc注释中支持html
命令行生成javadoc:(管理员权限)
用命令行可以生成java文档
在命令行输入命令: javadoc -encoding UTF-8 -charset UTF-8 文件名.java
其中javadoc和后面的java文件是生成java文档的关键命令,中间是为了中文字符不报错的命令,可有可无
IDEA生成javadoc:
在主菜单中找到 ‘工具’ 一项
选择 '创建javadoc'
作用域一定要确保是对应的java文件路径
如果显示找不到java源代码,请确认src文件是否是源代码根目录
浙公网安备 33010602011771号