文章目录
Java基础
1 注释、标识符、关键字
1.1 注释
- 注释并不会执行,是给写代码的看的
- 书写注释是一个好习惯
Java注释分为三种
-
单行注释 //注释
//这是单行注释
-
多行注释 /* 注释 */
/* * .,:,,, .::,,,::. * .::::,,;;, .,;;:,,....:i: * :i,.::::,;i:. ....,,:::::::::,.... .;i:,. ......;i. * :;..:::;::::i;,,:::;:,,,,,,,,,,..,.,,:::iri:. .,:irsr:,.;i. * ;;..,::::;;;;ri,,,. ..,,:;s1s1ssrr;,.;r, * :;. ,::;ii;:, . ................... .;iirri;;;,,;i, * ,i. .;ri:. ... ............................ .,,:;:,,,;i: * :s,.;r:... ....................................... .::;::s; * ,1r::. .............,,,.,,:,,........................,;iir; * ,s;........... ..::.,;:,,. ...............,;1s * :i,..,. .,:,,::,. .......... .......;1, * ir,....:rrssr;:, ,,.,::. .r5S9989398G95hr;. ....,.:s, * ;r,..,s9855513XHAG3i .,,,,,,,. ,S931,.,,.;s;s&BHHA8s.,..,..:r: * :r;..rGGh, :SAG;;G@BS:.,,,,,,,,,.r83: hHH1sXMBHHHM3..,,,,.ir. * ,si,.1GS, sBMAAX&MBMB5,,,,,,:,,.:&8 3@HXHBMBHBBH#X,.,,,,,,rr * ;1:,,SH: .A@&&B#&8H#BS,,,,,,,,,.,5XS, 3@MHABM&59M#As..,,,,:,is, * .rr,,,;9&1 hBHHBB&8AMGr,,,,,,,,,,,:h&&9s; r9&BMHBHMB9: . .,,,,;ri. * :1:....:5&XSi;r8BMBHHA9r:,......,,,,:ii19GG88899XHHH&GSr. ...,:rs. * ;s. .:sS8G8GG889hi. ....,,:;:,.:irssrriii:,. ...,,i1, * ;1, ..,....,,isssi;, .,,. ....,.i1, * ;h: i9HHBMBBHAX9: . ...,,,rs, * ,1i.. :A#MBBBBMHB##s ....,,,;si. * .r1,.. ,..;3BMBBBHBB#Bh. .. ....,,,,,i1; * :h;.. .,..;,1XBMMMMBXs,.,, .. :: ,. ....,,,,,,ss. * ih: .. .;;;, ;;:s58A3i,.. ,. ,.:,,. ...,,,,,:,s1, * .s1,.... .,;sh, ,iSAXs;. ,. ,,.i85 ...,,,,,,:i1; * .rh: ... rXG9XBBM#M#MHAX3hss13&&HHXr .....,,,,,,,ih; * .s5: ..... i598X&&A&AAAAAA&XG851r: ........,,,,:,,sh; * . ihr, ... . .. ........,,,,,;11:. * ,s1i. ... ..,,,..,,,.,,.,,.,.. ........,,.,,.;s5i. * .:s1r,...................... ..............;shs, * . .:shr:. .... ..............,ishs. * .,issr;,... ...........................,is1s;. * .,is1si;:,....................,:;ir1sr;, * ..:isssssrrii;::::::;;iirsssssr;:.. * .,::iiirsssssssssrri;;:. */
-
JavaDoc:文档注释 /** 注释 */
/** *@Description HelloWord *@Author GoddamnCode */
1.2 关键字
Java还有3个保留字:true、false、null。它们不是关键字,而是文字。包含Java定义的值。和关键字一样,它们也不可以作为标识符使用。
1.3 标识符
- 标识符由数字(09)和字母(AZ 和 a~z)、美元符号($)、下划线(_)以及 Unicode 字符集中符号大于 0xC0 的所有符号组合构成(各符号之间没有空格)。
- 标识符的第一个符号为字母、下划线和美元符号,后面可以是任何字母、数字、美元符号或下划线。
- 不能使用关键字作为变量名或者方法名
- 标识符是大小写敏感的
- Hello和hello不是同一个变量名
- 合法标识符举例:age、$salary、_value、 _1_value
- 非法标识符举例:123abc、-salary、#abc
- 可以使用中文命名,但是一般不建议这样去使用。
1.4 数据类型
Java是强类型语言,要求变量的使用要严格符合规定,所有变量都要先定义才能使用。
Java的数据类型分为两大类
1.4.1 基本类型
byte:
- byte 数据类型是8位、有符号的,以二进制补码表示的整数;
- 最小值是 -128(-2^7);
- 最大值是 127(2^7-1);
- 默认值是 0;
- byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一;
- 例子:byte a = 100,byte b = -50。
short:
- short 数据类型是 16 位、有符号的以二进制补码表示的整数
- 最小值是 -32768(-2^15);
- 最大值是 32767(2^15 - 1);
- Short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一;
- 默认值是 0;
- 例子:short s = 1000,short r = -20000。
int:
- int 数据类型是32位、有符号的以二进制补码表示的整数;
- 最小值是 -2,147,483,648(-2^31);
- 最大值是 2,147,483,647(2^31 - 1);
- 一般地整型变量默认为 int 类型;
- 默认值是 0 ;
- 例子:int a = 100000, int b = -200000。
long:
- long 数据类型是 64 位、有符号的以二进制补码表示的整数;
- 最小值是 -9,223,372,036,854,775,808(-2^63);
- 最大值是 9,223,372,036,854,775,807(2^63 -1);
- 这种类型主要使用在需要比较大整数的系统上;
- 默认值是 0L;
- 例子: long a = 100000L,Long b = -200000L。
"L"理论上不分大小写,但是若写成"l"容易与数字"1"混淆,不容易分辩。所以最好大写。
float:
- float 数据类型是单精度、32位、符合IEEE 754标准的浮点数;
- float 在储存大型浮点数组的时候可节省内存空间;
- 默认值是 0.0f;
- 浮点数不能用来表示精确的值,如货币;
- 例子:float f1 = 234.5f。
double:
-
double 数据类型是双精度、64 位、符合 IEEE 754 标准的浮点数;
-
浮点数的默认类型为 double 类型;
-
double类型同样不能表示精确的值,如货币;
-
默认值是 0.0d;
-
例子:
double d1 = 7D ; double d2 = 7.; double d3 = 8.0; double d4 = 8.D; double d5 = 12.9867;
7 是一个 int 字面量,而 7D,7. 和 8.0 是 double 字面量。
boolean:
- boolean数据类型表示一位的信息;
- 只有两个取值:true 和 false;
- 这种类型只作为一种标志来记录 true/false 情况;
- 默认值是 false;
- 例子:boolean one = true。
char:
- char 类型是一个单一的 16 位 Unicode 字符;
- 最小值是 \u0000(十进制等效值为 0);
- 最大值是 \uffff(即为 65535);
- char 数据类型可以储存任何字符;
- 例子:char letter = ‘A’;。
1.4.2 引用类型
-
类
String 是 类不是关键字
-
接口
-
数组
1.4.3 整数类型拓展
int i = 10;//十进制
int i2 = 010;//八进制
int i3 = 0x10;//十六进制
int i4 = 0b10;//二进制
1.4.4 浮点数拓展
最好完全避免使用浮点数进行比较
浮点数是有限的、离散的、、有舍入误差、接近但不等于。
1.4.5 字符拓展
字符可以强制转换为数字
char c1 = 'a'
int a = (int)c1;
所有字符本质还是数字
Unicode编码 2字节 0 - 65536
从U0000->UFFFF
1.4.5.1 转义字符
例子
\t 水平制表符
\n 换行符
......
1.5 类型转换
Java是强类型语言,在进行一些运算的时候,需要用到类型转换。
低 -------------------------------------------------------------->高
byte,short,char --> int --> long --> float --> double
为什么long64在float32之前?
因为小数的优先级大于整数
1.5.1 强制转换
类型 =(类型)变量名 (从高到底)
1.5.2 自动转换
从低到高
1.5.3 注意点
- 不能对布尔值进行转换
- 不能把对象类型转换成不相干的类型
- 在把高容量转换到低容量的时候,强制转换
- 转换的时候时候可能位数超过对应类型的位数导致数据错误,或者精度问题
//jdk7新特性 数字之间可以用下划线分割
int money = 10_0000_0000;
int year = 20;
long total = money * year;//-1474836480 计算时溢出,计算完时默认结果为int,之后才会转换为long
//先把一个数转换为long即可解决
//或者在数字后加L
long total2 = money * (long)year;
money = 10_0000_0000L;
1.6 变量
- 变量是可以变化的量
- Java是一种强类型语言,每个变量都必须声明其类型
- Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域
注意事项:
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型
- 变量名必须是合法的标识符
- 变量声明是一条完整的语句,因此每一个声明都必须以分号结束
1.6.1 变量作用域
public class Variable{
static int allClicks = 0;//类变量
String str = "hello world";//实例变量
public void method(){
int i = 0;//局部变量
}
}
1.6.2 常量
常量:初始化后不能再改变的值,不会变动的值
final + 类型 + 名 = 值
常量名一般使用大写字母
final double PI = 3.14;
1.6.3 变量的命名规范
- 所有的变量、方法、类名:见名知意
- 类成员变量:首字母小写和驼峰原则:monthSalary(除第一个单词外其他单词首字母大写)
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线:MAX_VALUE
- 类名:首字母大写和驼峰原则:Man,GoodMan
- 方法名:首字母小写和驼峰原则:run(),runRun()
1.7 基本运算符
- 算数运算符:+,-,*,%,++,–
- 复制运算符:=
- 关系运算符:>,<,>=,<=,==,!=,instanceof
- 逻辑运算符:&&,||,!
- 位运算符:&,|,^,~,>>,<<,>>>
- 条件运算符: ? :
- 扩展复制运算符: +=,-=,*=,/=
1.7.1 字符串连接符+
int a = 10;
int b = 20;
System.out.println(" "+a+b);//字符串在前面,会将其他操作数转换成string后进行连接,输出为 1020
System.out.println(a+b+" ");//字符串在后面,前面a+b仍会运算
1.7.2 三元运算符
x ? y : z
如果x为真,结果为y,如果x为假,结果为z
1.8包机制
为了更好地组织类,Java提供了包机制,用于区别类名的命名空间
包的本质就是文件夹
包语句的语法格式:
package pkg1[. pkg2[. pkg3...]];
package必须放在最上面
一般利用公司域名倒置作为包名
为了能够使用某一个包的成员,我们需要在Java程序中期明确导入该包。使用"import"语句即可完成此功能
import package1[.package2...].(classname|*);
导入包下所有类 *为通配符
import xxx.xxx.xxx.*;
1.9 JavaDoc生成文档
javadoc命令是用来生成自己API文档的
参数信息
- @author
- @version
- @since 指明需要最早使用的jdk版本
- @param 参数名
- @return 返回值清空
- @throws 异常抛出情况
使用命令行查看javadoc信息
javadoc -encoding UTF-8 -charset UTF-8 xxx.java
也可在idea中设置鼠标移动在类上自动显示