Java基础
注释不会被执行,Java中注释有三种
-
单行注释
//单行注释
-
多行注释
/*多行注释*/
-
文档注释
/**
* @Description HelloWorld
* @Author Yulu
*/
标识符和关键字
关键字
标识符
Java所有组成部分都需要名字。类名、方法名、变量名都被称为标识符
所有标识符都应以字母、$、或下划线开头
首字符后可以是字母、$、下划线或数字的任何字符组合
不能使用关键字作为变量名或方法名
标识符是大小写敏感的
数据类型
强类型语言:要求变量的使用严格符合规定,所有变量必须先定义后使用
弱类型语言
Java数据类型分为两大类
-
基本类型
-
引用类型
整数拓展:
二进制 八进制 十进制 十六进制 0b 0 0x
浮点数拓展:
float f = 0.1f;
double d = 1.0/10;
System.out.println(f == d);
//false尽量少使用浮点数进行比较,用BigDecimal替代
字符拓展:
强制类型转换(所有的字符本质还是数字)
char c1 = 'a';
char c2 = '中';
System.out.println(c1); //a
System.out.println((int)c1); //97
System.out.println(c2); //中
System.out.println((int)c2); //20013
编码:
char c3 = '\u0061';
System.out.println(c3); //a
转义字符:
\t 制表符
\n 换行符
字符串比较:
String stra = new String("Hello World");
String strb = new String("Hello World");
String strc = "Hello World";
String strd = "Hello World";
System.out.println(stra == strb); //false
System.out.println(strc == strd); //true
布尔值扩展:
boolean flag = true;
if(flag == true) {}
if(flag) {}
//推荐后者,代码要精简易读
类型转换
由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换
运算中,不同类型的数据应先转化为同一类型
强制类型转换:高->低
int i = 128;
byte j = (byte)i;
System.out.println(j); //-128 内存溢出
自动类型转换:低->高
int i = 128;
double j = i;
System.out.println(j); //128.0
注意:
-
不能对布尔值进行转换
-
不能把对象类型转换为不相干的类型
-
在把高容量转换到低容量时,强制转换
-
转换的时候可能存在内存溢出,或者精度问题
-
JDK 7新特性,数字之间可以用下划线分割
int money = 10_0000_0000;
System.out.println(money); -
操作较大数时,注意溢出问题
int money = 10_0000_0000;
int years = 20;
int total1 = money*years; //-1474836480
long total2 = money*years; //-1474836480
long total3 = money*((long)years); //20000000000
变量、常量、作用域
变量
Java是一种强类型语言,每个变量都必须声明其类型,变量是程序中最基本的存储单元,其要素包括变量名、变量类型、作用域
//数据类型 变量名 = 值;
注意
-
每个变量都有类型,可以是基本类型,也可以是引用类型
-
变量名必须是合法的标识符
-
变量声明是一条完整的语句,因此每一个声明都必须以分号结束
-
不建议在一行定义多个变量
作用域
public class Demo {
//类变量
static double salary = 2500;
//实例变量:从属于对象,如果不进行初始化,将是这个类型的默认值(0/0.0/null/false)
int age;
String name;
public static void main(String[] args) {
//局部变量:必须声明和初始化值
int i = 10;
System.out.println(i); //10
Demo demo = new Demo();
System.out.println(demo.age); //0
System.out.println(demo.name); //null
System.out.println(salary); //2500
}
public void add() {
}
}
常量
初始化后不能再改变的值,可理解为特殊的变量,值被设定后,在程序运行过程中不允许被改变。常量名一般使用大写字符
//final 常量名 = 值;
final double PI = 3.14;
命名规范
-
所有变量、方法、类名:见名知意
-
类名:首字母大写和驼峰原则。eg:GoodMan
-
类成员变量:首字母小写和驼峰原则。eg:lastName
-
局部变量:首字母小写和驼峰原则。eg:monthSalary
-
方法名:首字母小写和驼峰原则。eg:runAway()
-
常量:大写字母和下划线。eg:MAX_VALUE
基本运算符
-
算术运算符:+,-,*,/,%,++,--
package operator;
public class Demo01 {
public static void main(String[] args) {
//二元运算符
int a = 10;
int b = 20;
System.out.println(a+b); //30
System.out.println(a-b); //-10
System.out.println(a*b); //200
System.out.println(a/b); //0
System.out.println(a/(double)b); //0.5
System.out.println(a%b); //10
//一元运算符
int c = 3;
int d = c++; //先给d赋值,再进行c自增
int e = ++c; //先给c自增,再给e赋值
System.out.println(c); //5
System.out.println(d); //3
System.out.println(e); //5
//幂运算
double pow = Math.pow(2,3);
System.out.println(pow); //8.0
}
}package operator;
public class Demo02 {
public static void main(String[] args) {
long a = 1231231312312212123L;
int b = 123;
short c = 10;
byte d = 8;
System.out.println(a+b+c+d); //结果为long类型
System.out.println(b+c+d); //结果为int类型
System.out.println(c+d); //结果为int类型
}
} -
赋值运算符:=
-
关系运算符:>,<,>=,<=,==,!=,instanceof
package operator;
public class Demo03 {
public static void main(String[] args) {
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
}
} -
逻辑运算符:&&,||,!
package operator;
public class Demo04 {
public 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
//短路
int c = 6;
boolean d = b && c++<6;
System.out.println(d); //false
System.out.println(c); //6
}
} -
位运算符:&,|,^,~,>>,<<,>>>
package operator;
public class Demo05 {
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 = 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 operator;
public class Demo07 {
public static void main(String[] args) {
//x ? y : z
//如果x为true,则结果为y,否则结果为z
int score = 80;
String type = score >= 60 ? "pass" : "fail";
System.out.println(type); //pass
}
} -
扩展赋值运算符:+=,-=,*=,/=
package operator;
public class Demo06 {
public static void main(String[] args) {
int a = 10;
int b = 20;
a += b;
System.out.println(a); //30
//字符串连接符
System.out.println(""+a+b); //3020
System.out.println(a+b+""); //30
}
}
包机制
Java提供包机制,用于区分类名的命名空间
一般利用公司域名倒置作为包名
为了使用某一个包的成员,我们需要在Java程序中明确导入该包,使用import即可
JavaDoc
javadoc命令是用来生成自己API文档的
参数信息
-
@author 作者名
-
@version 版本号
-
@since 指明需要最早使用的JDK版本
-
@param 参数名
-
@return 返回值情况
-
@throws 异常抛出情况
命令行生成javadoc文档
javac -encoding UTF-8 -charset UTF-8 Doc.java
文件夹中将生成index.html
IDEA生成javadoc文档
-》打开IDEA
-》Tools
-》Generate JavaDoc
-》选择是整个项目还是模块还是单个文件
-》指定文档输出路径
-》Locale选择地区(这将决定文档的语言,zh_CN是中国)
-》传入JavaDoc的参数,一般这样写 -encoding UTF-8 -charset UTF-8 -windowtitle “文档HTML页面标签的标题” -link http://docs.Oracle.com/javase/8/docs/api
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix