1.注释
-
单行注释
//单行注释
-
多行注释
/* 多行注释 */
-
文档注释
/** * 文档注释 * * */
2.标识符和关键字
2.1标识符
Java的所有的组成部分都需要名字。类名、变量名以及方法名都被成为标识符。
1. 所有的标识符都应该以字母(A-Z或者 a-z),美元符($)、或者下划线()开始首字符之后可以是字母(A-Z 或者 a-z),美元符($)、下划线()或数字的任何字符组合
2. **不能使用关键字作为变量名或方法名**
3. **标识符是大小写敏感的**
4. 合法标识符举例:age、$salary、_value、 1 value
5. 非法标识符举例:123abc、-salary、#abc
6. 可以使用中文命名,但但是一般不建议这样去使用,也也不建议使用拼音,很Low
2.2关键字
1)48个关键字:abstract、assert、boolean、break、byte、case、catch、char、class、continue、default、do、double、else、enum、extends、final、finally、float、for、if、implements、import、int、interface、instanceof、long、native、new、package、private、protected、public、return、short、static、strictfp、super、switch、synchronized、this、throw、throws、transient、try、void、volatile、while。
2)2个保留字(现在没用以后可能用到作为关键字):goto、const。
3)3个特殊直接量:true、false、null。
3.数据类型
强类型语言:要求变量的使用要严格符合规定,所有变量都必须先定义后使用
弱类型语言
Java的数据类型分为两大类
基本类型(primitive type)
- 6种数字类型
- 4种整数型:byte、short、int、long
- 2种浮点型:float、double
- 1种字符类型:char
- 1种布尔型:boolean
基本类型 | 存储大小 | 初始化默认值 | 取值范围 | 包装类型 |
---|---|---|---|---|
byte | 1字节(8位) | 0 | -128~127 | Byte |
short | 2字节(16位) | 0 | -32768~32767 | Short |
int | 4字节(32位) | 0 | -2^31 ~ 2^31 - 1 | Integer |
long | 8字节(64位) | 0L。"L"理论上不分大小写,但若写成"l"容易与数字"1"混淆,不容易分辨,所以最好大写。 | -2^63 ~ 2^63 - 1 | Long |
float | 4字节(32位) | 0.0f | 符合IEEE754标准的浮点数,1.4E-45 ~ 3.4028235E38 | Float |
double | 8字节(64位) | 0.0d | 符合IEEE754标准的浮点数,4.9E-324 ~ 1.7976931348623157E308 | Double |
char | 2字节(16位) | ‘\u0000’ | \u0000 ~ \uffff(十进制等效值为 0~65535,本质也是数值) | Character |
boolean | 1字节(8位)/4字节(32位) | false | true/false | Boolean |
//八大基本数据类型
//整数
int num1=10;
byte num2=20;
short num3=30;
long num4=50L;//long类型要在后面加L
//小数:浮点型
float num5=50.1F;//float类型要在后面加F
double num6=3.1415926;
//字符类型
char A ='a';
//String类型
String B="fx";
//boolean布尔类型
boolean C=true;
引用类型(reference type)
- 接口(interface)、数组([ ])、类(class)
什么是字节
1. 位(bit):计算机内部数据存储的最小单位
2. 字节(byte):计算机中数据处理的基本单位,习惯用大写B来表示
3. 1B=8bit
4. 字符:计算机中使用的字母、数字、字和符号
4.数据类型扩展及面试题
进制
二进制0b 十进制 八进制0 十六进制 0x
浮点数拓展:银行业务怎么表示?
用BigDecimal来表示 数学工具类
字符拓展
强制转换===所有字符本质还是数字
编码 Unicode表:(97=a 65=A) 2字节 65536
转义字符
\n 换行
\r 表示回车符,将光标定位到当前行的开头,不会跳转到下一行
\t 表示制表符,将光标移到下一个制表符的位置,相当于Tab键
\b 表示退格符号,就像键盘上的Backspace键
\’ 表示单引号字符
\" 表示双引号字符
\\ 表示反斜杠字符
布尔值扩展
boolean flag=true;
if(flag){
...
}
5.类型转换
由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换
低------------------------------->高
byte,short,char->int->long->float->double
运算中,不同类型的数据先转换为同一类型,然后进行运算。
强制类型转换:高—>低
自动类型转换:低—>高
1. **不能对布尔值转换**
2. **不能把对象类型转为不相干的类型**
3. **把高容量转为低容量时为强制转换**
4. **转换的时候可能存在内存溢出,或者精度问题**
6.变量、常量、作用域
什么是变量?
变量:可以变化的量。
Java是一种强类型语言,每个变量都必须声明其类型。
Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
type varName [=value] [{,varName[=value]}];
//数据类型 变量名 = 值;可以用逗号隔开来声明多个类型变量
//不建议在一行声明多个变量
注意事项:
1. 每个变量都有类型,类型可以是基本类型,也可以是引用类型
2. 变量名必须是合法的标识符
3. 变量声明是一条完整的语句,因此每一个声明都必须以分号结束
实例变量:从属于对象,如果不进行初始化,这个类型的默认值0 0.0,会随着类一起产生一起消失
布尔值:默认为false
除了基本类型,其余的默认值都是null
final是常量修饰符,只能赋值一次,不存在先后顺序
7.基本运算符
1. 算术运算符
操作符 | 描述 | 例子 |
---|---|---|
+ | 加法 - 相加运算符两侧的值 | A + B 等于 30 |
- | 减法 - 左操作数减去右操作数 | A – B 等于 -10 |
* | 乘法 - 相乘操作符两侧的值 | A * B等于200 |
/ | 除法 - 左操作数除以右操作数 | B / A等于2 |
% | 取余 - 左操作数除以右操作数的余数 | B%A等于0 |
++ | 自增: 操作数的值增加1 | B++ 或 ++B 等于 21(区别详见下文) |
– | 自减: 操作数的值减少1 | B-- 或 --B 等于 19(区别详见下文) |
2. 关系运算符
运算符 | 描述 | 例子 |
---|---|---|
== | 检查如果两个操作数的值是否相等,如果相等则条件为真。 | (A == B)为假。 |
!= | 检查如果两个操作数的值是否相等,如果值不相等则条件为真。 | (A != B) 为真。 |
> | 检查左操作数的值是否大于右操作数的值,如果是那么条件为真。 | (A> B)为假。 |
< | 检查左操作数的值是否小于右操作数的值,如果是那么条件为真。 | (A <B)为真。 |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。 | (A> = B)为假。 |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。 | (A <= B)为真。 |
3. 位运算符
操作符 | 描述 | 例子 |
---|---|---|
& | 如果相对应位都是1,则结果为1,否则为0 | (A&B),得到12,即0000 1100 |
| | 如果相对应位都是 0,则结果为 0,否则为 1 | (A | B)得到61,即 0011 1101 |
^ | 如果相对应位值相同,则结果为0,否则为1 | (A ^ B)得到49,即 0011 0001 |
〜 | 按位取反运算符翻转操作数的每一位,即0变成1,1变成0。 | (〜A)得到-61,即1100 0011 |
<< | 按位左移运算符。左操作数按位左移右操作数指定的位数。 | A << 2得到240,即 1111 0000 |
>> | 按位右移运算符。左操作数按位右移右操作数指定的位数。 | A >> 2得到15即 1111 |
>>> | 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 | A>>>2得到15即0000 1111 |
4. 逻辑运算符
操作符 | 描述 | 例子 |
---|---|---|
&& | 称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。 | (A && B)为假。 |
| | | 称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。 | (A | | B)为真。 |
! | 称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。 | !(A && B)为真。 |
5. 赋值运算符
操作符 | 描述 | 例子 |
---|---|---|
= | 简单的赋值运算符,将右操作数的值赋给左侧操作数 | C = A + B将把A + B得到的值赋给C |
+ = | 加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 | C + = A等价于C = C + A |
- = | 减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 | C - = A等价于C = C - A |
* = | 乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 | C * = A等价于C = C * A |
/ = | 除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数 | C / = A,C 与 A 同类型时等价于 C = C / A |
(%)= | 取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数 | C%= A等价于C = C%A |
<< = | 左移位赋值运算符 | C << = 2等价于C = C << 2 |
>> = | 右移位赋值运算符 | C >> = 2等价于C = C >> 2 |
&= | 按位与赋值运算符 | C&= 2等价于C = C&2 |
^ = | 按位异或赋值操作符 | C ^ = 2等价于C = C ^ 2 |
| = | 按位或赋值操作符 | C | = 2等价于C = C | 2 |
-
条件运算符
条件运算符也被称为三元运算符。该运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量。
variable x = (expression) ? value if true : value if false
-
instanceof运算符
该运算符用于操作对象实例,检查该对象是否是一个特定类型(类类型或接口类型)
String name = "James";
boolean result = name instanceof String; // 由于 name 是 String 类型,所以返回真
运算符优先级
类别 | 操作符 | 关联性 |
---|---|---|
后缀 | () [] . (点操作符) | 左到右 |
一元 | expr++ expr– | 从左到右 |
一元 | ++expr --expr + - ~ ! | 从右到左 |
乘性 | * /% | 左到右 |
加性 | + - | 左到右 |
移位 | >> >>> << | 左到右 |
关系 | > >= < <= | 左到右 |
相等 | == != | 左到右 |
按位与 | & | 左到右 |
按位异或 | ^ | 左到右 |
按位或 | | | 左到右 |
逻辑与 | && | 左到右 |
逻辑或 | | | | 左到右 |
条件 | ?: | 从右到左 |
赋值 | = + = - = * = / =%= >> = << =&= ^ = | = | 从右到左 |
逗号 | , | 左到右 |
8.包机制
为了更好的组织类,Java提供了包机制,用于区别类名的命名空间。
包语句的语法格式:
package pkg1[. pkg2[. pkg3...]];
为了能够使用某一个包的成员,需要在Java程序中明确导入该包,使用import语句。
import package1[.package2...].(classname|*);
//*是通配符,可以导入这个包的所有东西
9.Java Doc生成文档
javadoc命令是用来生成自己的API文档的
参数信息
@author 作者名
@version 版本号
@since 指明需要最早使用的jdk版本
@param 参数名
@return 返回值情况
@throws 异常抛出情况
√学习:使用IDEA生产JavaDoc文档