【学习记录】Java基础语法

发布于:2023-01-22 ⋅ 阅读:(14) ⋅ 点赞:(0) ⋅ 评论:(0)

一、注释、标识符、关键字

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。
在这里插入图片描述
在这里插入图片描述