文章目录
一、注释、标识符、关键字
1.注释
注释并不会被执行,是给写代码的人看的,书写注释是一个非常好的习惯。
Java中的注释有三种:单行注释、多行注释、文档注释。
/**
*@Author 木易RUN200
*这是文档注释的示例
*/
public class HelloWorld {
/* 这是一个多行
* 这是一个多行注释
* 这是一个多行注释的示例
*/
public static void main(String[] args){
// 这是单行注释的示例
/* 这个也是单行注释的示例 */
System.out.println("Hello World");
}
}
2.标识符
Java 所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
关于 Java 标识符,有以下几点需要注意:
- 所有的标识符都应该以字母(A-Z 或者 a-z),美元符($)、或者下划线(_)开始
- 首字符之后可以是字母(A-Z 或者 a-z),美元符($)、下划线(_)或数字的任何字符组合
- 关键字不能用作标识符
- 标识符是大小写敏感的
- 合法标识符举例:age、$salary、_value、__1_value
- 非法标识符举例:123abc、-salary
- 不建议使用中文或字母拼写,我以前这样写被老师说很low
3.关键字
Java 关键字不能用于常量、变量、和任何标识符的名称。
注意:Java 的 null 不是关键字,类似于 true 和 false,它是一个字面常量,不允许作为标识符使用。
(1)类、方法和变量修饰符
关键字 | 说明 |
---|---|
abstract | 声明抽象 |
class | 类 |
extends | 扩充,继承 |
final | 最终值,不可改变的 |
implements | 实现(接口) |
interface | 接口 |
native | 本地,原生方法(非 Java 实现) |
new | 新,创建 |
static | 静态 |
strictfp | 严格,精准 |
synchronized | 线程,同步 |
transient | 短暂 |
volatile | 易失 |
(2)程序控制语句
关键字 | 说明 |
---|---|
break | 跳出循环 |
case | 定义一个值以供 switch 选择 |
continue | 继续 |
default | 默认 |
do | 运行 |
else | 否则 |
for | 循环 |
if | 如果 |
instanceof | 实例 |
return | 返回 |
switch | 根据值选择执行 |
while | 循环 |
(3)访问控制
关键字 | 说明 |
---|---|
private | 私有的 |
protected | 受保护的 |
public | 公共的 |
default | 默认 |
(4)错误处理
关键字 | 说明 |
---|---|
assert | 断言表达式是否为真 |
catch | 捕捉异常 |
finally | 有没有异常都执行 |
throw | 抛出一个异常对象 |
throws | 声明一个异常可能被抛出 |
try | 捕获异常 |
(5)包相关
关键字 | 说明 |
---|---|
import | 引入 |
package | 包 |
(6)基本类型
关键字 | 说明 |
---|---|
boolean | 布尔型 |
byte | 字节型 |
char | 字符型 |
double | 双精度浮点 |
float | 单精度浮点 |
int | 整型 |
long | 长整型 |
short | 短整型 |
(7)变量引用
关键字 | 说明 |
---|---|
super | 父类,超类 |
this | 本类 |
void | 无返回值 |
二、数据类型
1.内置数据类型
Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。
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’;。
2.引用数据类型
- 在Java中,引用类型的变量非常类似于C/C++的指针。引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时被指定为一个特定的类型,比如 Employee、Puppy 等。变量一旦声明后,类型就不能被改变了。
- 对象、数组都是引用数据类型。
- 所有引用类型的默认值都是null。
- 一个引用变量可以用来引用任何与之兼容的类型。
- 例子:Site site = new Site(“Runoob”)。
3.数据类型扩展及面试题
(1)整数拓展
进制问题使用前缀表示,二进制前缀0b 八进制前缀0 十进制 十六进制前缀0x
示例:
//整数扩展 进制问题前缀表示 二进制0b 八进制0 十进制 十六进制0x
System.out.println("========整数扩展========");
int i = 10; //十进制
int i2 = 0b10 //二进制0b
int i8 = 010; //八进制0
int i16 = 0x10; //十六进制0x
System.out.println(i); //输出 10
System.out.println(i2); //输出 2
System.out.println(i8); //输出 8
System.out.println(i16); //输出 16
(2)浮点数拓展
问:银行业务怎么表示钱?
答:最好完全避免使用浮点数比较,float是有限的,离散的,舍入误差,大约,接近但不等于;可使用BigDecimal数学工具类。
//浮点数扩展 银行业务怎么表示钱?
System.out.println("========浮点数扩展========");
//float 有限、离散、舍入误差、大约、接近但不等于
//double
//最好完全避免使用浮点数比较,使用BigDecimal数学工具类
float f = 0.1f; //值为0.1
double d = 1.0/10; //值为0.1
System.out.println(f==d); //但是输出false
System.out.println(f); //0.1
System.out.println(d); //0.1
float d1 = 31231231313213131213f;
float d2 = d1 + 1;
System.out.println(d1==d2); //输出true
(3)字符拓展
问:强制转换可以把字符转为数字吗?
答:每一个字符有对应的Unicode编码,故而可以强制转换为数字, U0000-UFFFF。
//字符拓展
//强制转换可以把字符转为数字
System.out.println("========字符扩展========");
char c1 = 'a';
char c2 = '中';
System.out.println(c1);
System.out.println((int)c1);//输出97
System.out.println(c2);
System.out.println((int)c2);//输出20013
//所有的字符还是数字
//编码 Unicode表:97=a , 65=A 2字节 0-65536 2的16次方
//U0000-UFFFF
char c3 = '\u0061';
System.out.println(c3); //a
(4)布尔扩展
System.out.println("========布尔扩展========");
boolean flag = true;
//下面两个if语句相同
if (flag==true){} //新手写法
if (flag){} //老手写法
(5)以下代码(从内存分析)
看似一样,但是输出结果一个false,一个true
第一个比较内存地址不同,第二个比较是在字符串常量池。
String sa = new String("hello world");
String sb = new String("hello world");
System.out.println(sa==sb); //输出false
String sc = "hello world";
String sd = "hello world";
System.out.println(sc==sd); //输出true
三、类型转换
整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。转换从低级到高级。
- byte,short,char—> int —> long—> float —> double
- 低 ------------------------------------> 高
1.数据类型转换规则
- 不能对布尔值进行转换
- 不能把对象类型转换为不相干的类型
- 在把高容量转换为低容量的时候,强制转换
- 转换的时候可能存在内存溢出,或者精度问题
- 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入
2.自动类型转换
- 必须满足转换前的数据类型的位数要低于转换后的数据类型。
3.强制类型转换
- 条件是转换的数据类型必须是兼容的。
- 格式:(type)value type是要强制类型转换后的数据类型
4.隐含强制类型转换
- 整数的默认类型是 int。
- 小数默认是 double 类型浮点型,在定义 float 类型时必须在数字后面跟上 F 或者 f。
四、变量、常量
1.命名规范
- 所有变量、方法、类名:见名知意
- 类成员变量:首字母小写,驼峰原则,除第一个单词外后面的单词首字母大写:holloWorld
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线:MAX_VALUE
- 类名:首字母大写和驼峰原则:Man,GoodMan
- 方法名:首字母小写和驼峰原则:run(),runRun()
2.变量
在Java语言中,所有的变量在使用前必须声明。声明变量的基本格式如下:
type identifier [ = value][, identifier [= value] ...] ;
//type为Java数据类型。identifier是变量名。可以使用逗号隔开来声明多个同类型变量。
Java语言支持的变量类型有:
- 类变量(静态变量):独立于方法之外的变量,用 static 修饰。
- 实例变量:独立于方法之外的变量,不过没有 static 修饰。
- 局部变量:类的方法中的变量。
3.常量
- 常量在程序运行时是不能被修改的。
- 在 Java 中使用 final 关键字来修饰常量,声明方式和变量类似:
final double PI = 3.1415927;
- 虽然常量名也可以用小写,但为了便于识别,通常使用大写字母表示常量。
- Java的字符串常量也是包含在两个引号之间的字符序列。
- 字符串常量和字符变量都可以包含任何 Unicode 字符。
- Java语言支持一些特殊的转义字符序列。
五、运算符
- 算术运算符:+ , - , * , / , % , ++ , –
- 关系运算符:== , != , > , < , >= , <= , !=instanceof
- 位运算符:& , | , ^ , ~ , << , >> , >>>
- 逻辑运算符:&& , || , !
- 赋值运算符:= , += , -= , *= , /= , (%)= , <<= , >>= , &= , ^= , |=
- 条件运算符:?
六、包机制
- 为了更好地组织类,Java提供了包机制,用于区别类名的命名空间。
- 包语句的语法格式为:
package pkg1[.pkg2[.pkg3...]];
- 一般利用公司域名倒置作为报名:com.baidu.XXX
- 为了能够使某一个包的成员,我们需要在Java程序中明确导入该包,使用import语句完成该功能。
import package1[.package2...].(classname|*);
七、JavaDoc
1.javadoc命令是用来声生成自己API文档的
2.参数信息
- @author 作者名
- @version 版本号
- @since 指明需要最早使用的jdk版本
- @param 参数名
- @return 返回值情况
- @throws 异常抛出情况
3.使用IDEA生成JavaDoc文档
(1)打开 idea,点击 Tools–> Generate JavaDoc,弹出JavaDoc文档的配置页面。
(2)进行参数配置,点击OK生成。
3.在输出目录里查看生成的JavaDoc。