Java基础语法
Java基础
注释、标识符、关键字
注释
平时我们编写代码,在代码量比较少的时候,我们可以看懂自己写的,但是当项目结构一旦复杂起来,我们就需要用的注释了,一是为了自己看的清楚,同时也是为了和别人更好的协作。
注释并不会被执行,如它的名字一样,只起到注释的作用,即给别人看,让别人一目了然你这代码写的是什么。所以说注释是一个非常好的习惯。
Java注释有三种类型:
- 单行注释
1 | // 这是单行注释 |
- 多行注释
1 | /* |
- 文档注释
1 | /** |
关于注释的样式,可以在IDEA的settings里更改成自己喜欢的样式,包括颜色等。
标识符
Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
Java里一些常见的关键字名如图所示:
关于标识符的注意点
- 所有的标识符都应该以字母(A-Z或者a-z),美元符($)、或者下划线(_)开始;
- 首字符之后可以是字母(A-Z或者a-z),美元符($)、下划线(_)或数字的任何字符组合;
- 不能使用关键字作为变量名或方法名;
- 标识符是大小写敏感的
- 合法标识符举例:age、 $salary、_value、
__1_value
; - 非法标识符举例:123abc、- salary、#abc;
- 可以使用中文命名,但是一般不建议这样去使用,也不建议使用拼音,很Low;
1 | public static void main(String[] args){ |
数据类型
强类型语言
要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用,优点是效率高。(C、Java、JS等)
弱类型语言
变量使用不需要先定义,由程序自行判断变量类型,效率低。(Python等)
Java中的数据类型
基本类型(primitive type)
数值类型
整数类型
- byte:占1个字节范围:-128-127(剩下1位用于判断正负符号)
- short:占2个字节范围:-32768-32767
- int:占4个字节范围:-2147483648-2147483647
- long:占8个字节:-9223372036854775808-9223372036854775807
浮点类型
- float:占4个字节
- double:占8个字节
字符类型
- char:占2个字节
boolean类型
占1位,其值只有true和false两个
引用类型(reference type)
可以理解,除了基本数据类型外,都是引用数据类型。
- 类
- 接口
- 数组
基本数据类型面试题
整数拓展
进制
二进制
- 以0b开头
十进制
- 正常使用
八进制
- 以0开头
- 十六进制
- 以0x开头
1 | public class IntTest{ |
浮点数拓展
银行业务怎么表示?
一般银行业务中的钱的数据类型会使用java的数学工具类—BigDecimal来表示,因为java中的float和double都存在一定的问题。
1 | // float 有限 离散 舍入误差 接近但不等于 |
字符拓展
字符类型数据是由数值类型数据根据unicode编码转换而来,即字符类型数据实质上就是值不同的数值类型数据。
1 | char c1 = 'A'; |
小写字母的数值加上32转换成char类型即可变成大写字符。
像U0000
、UFFFF
之类的都是unicode编码。
1 | # (\)是转义字符 |
常见的一些转义字符:
\t
:制表符\n
:换行符- ……
关于字符串类型
布尔值拓展
1 | boolean flag = true; // boolean类型变量如果没赋值,默认位false(一般是在类中) |
遗留问题:进制转换练习
字节科普
什么是字节
- 位(bit):是计算机内部数据储存的最小单位,11001100是一个八位二进制数。
- 字节(byte):是计算机中数据处理的基本单位,习惯上用大写B来表示。
- 1B(byte,字节)=8bit(位)
- 字符:是指计算机中使用的字母、数字、字和符号
转换关系
1bit表示1位
1Byte表示ー个字节 1B=8b
1024B=1KB
1024KB=1M
1024M=1G
电脑的32位和64位区别在于64位支持内存最大寻址空间位128g。
类型转換
由于Java是强类型语言,所以在进行有些运算的时候,需要用到类型转换。
1 | 低 -----------------------------------------------> 高 |
在运算中,不同的类型数据会先转换为同一类型数据,然后进行运算,一般是转换成运算中最高的那类型数据的类型。
强制类型转换
1 | public classs Test{ |
强制转换(由高到低转换)时避免内存转换成小的类型,导致溢出。
自动类型转换
自动类型转换是由低类型向高类型的数据类型转换。
1 | public classs Test{ |
注意
- 不能对布尔值进行转换;
- 不能把对象类型转换为不相干的类型;(比如人🧑不能转换为猪🐖,而男人👨可以转换为女人👧)
- 在把高容量转换到低容量的时候,强制转换;
- 转换的时候可能存在内存溢出或者精度问题;
1 | System.out.println((int)23.7); // 23 |
数字如果过大,数字之间可以用下划线分割,这时JDK7引入的特性。
1 | int money = 10_0000_0000; // 操作比较大的数时,注意溢出问题 |
变量、常量
变量
- 变量是什么:就是可以变化的量!
- Java是一种强类型语言,每个变量都必须声明其类型。
- Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
变量代表一块空间,位置是确定的,但是存储什么东西是不知道的。
变量类型
实例变量:从属于对象;如果不自行初始化,则变量默认为这个类型的默认值
- int默认是0
- double默认是0.0
- 布尔值默认是false
- 除了基本类型外,其余类型的变量默认值都是null
局部变量:在方法体内部的变量称之为局部变量,必须声明和初始化值
变量类型 变量名字 = new Class1()
类变量 static:在类体内,方法体外申明的。类变量从属于类,随着类出现而出现,消失而消失,不需要初始化
- ```java
public class Class1{
}// 类变量 static double salary = 2500; public static void main(String[] args){ System.out.println(salary) }
1
2
3
4
5
6
7
8
9
10
11
12
### 常量
* 常量(constant):初始化( initialize)后不能再改变值!不会变动的值。
* 所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。
* ```java
final 常量名 = 值;
final double PI = 3.14;
- ```java
常量名一般使用大写字符。
命名规范
- 所有变量、方法、类名:见名知意;
- 类成员变量:首字母小写和驼峰原则: monthSalary
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线: MAX_VALUE
- 类名:首字母大写和驼峰原则:Man, GoodMan
- 方法名:首字母小写和驼峰原则:run(), runRun()
运算符
Java语言支持如下运算符:
- 算术运算符:+, -, *, /, %, ++,—
- 赋值运算符:=
- 关系运算符:>,<,>=,<=,==,!=,instanceof
- 逻辑运算符:&&,||,!
- 位运算符:&,|,^,~,>>,<<,>>>(了解)
- 条件运算符:?:
- 扩展赋值运算符:+=,-=,*=,/=
运算中,会向数据中类型最大的转化。
自增自减
逻辑运算符和位运算符和条件运算符案例
短路运算
位运算
扩展赋值运算符
字符串连接
三元运算符及小结
包机制、 JavaDoc
包机制
- 为了更好地组织类,Java提供了包机制,用于区別类名的命名空间。
- 包语句的语法格式为:
- 一般利用公司域名倒置作为包名
- com.baidu.www
- 为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包。使用” Import”语句可完成此功能
包的本质就是个文件夹。
JavaDoc
javacdoc
命令是用来生成自己的API文档。
参数信息:
- @author:作者名
- @version:版本号
- @since:指明需要最早使用的jdk版本
- @param:参数名
- @return:返回值情况
- @throws:异常抛出情况
代码文件:
1 | package MultiplyState; |