注释和API
- 单行注释:用 // 来实现
- 多行注释:用 /**/ 来实现
- 文档注释::例如java的API,在cmd窗口中可用javadoc命令使文档注释生成API
- javadoc 命令还包含了大量其他选项,读者可以通过在cmd执行 javadoc -help查看 javadoc 命令的所有选项
- API 文档类似产品使用说明,通常使用说明书只需要介绍那些暴露供用户使用的部分,Java 中只有
public,protected修饰的内容才是希望暴露给别人使用的,因此javadoc 默认只处理 public protcted
修饰的内容。 如果开发者确实希望javadoc工具可以提取private修饰的内容,则可以在使用 javadoc
工具时增加-private 选项. - 注释的作用:增加可读性,方便找错
标识符和关键字
- Java 语言里的分号( ; )、花括号({})、方括号([])、圆括号 (())、空格、圆点(.)都具有特殊的分隔作用,因此被统称为分隔符。
- Java 语句可以跨越多行书写,只要在最后结束的地方使用分号结束即可。
- 但是字符串、变量名不能跨越多行。
- 虽然 Java 语法允许跨行书写多个语旬,但从程序可读性角度来看,应该避免在跨行书写多个语句。
- 标识符就是用于给程序中变量、类、方法命名的符号 ,Java语言的标识符必须以字母、下画线(_)、美元符($)开头,后面可以跟任意数目的字母,数字、下画线和美元符.此处的宇母并不局限于 26 个英文字母,甚至可以包含中文字符、日文字符等。
- java 是区分大小写的,因此 abc和ABC是两个不同的标识符。
- 不允许使用单独的下画线(_)作为标识符
- 标识符可以由字母、数字、下画线( )和美元符($)组成,其中数字不能打头。
- 标识符不能是 Java 关键字和保留字,但可以包含关键 和保留字。
- 标识符不能包含空格
- 标识符只能包含美元符($) ,不能包含@、#等其他特殊字符
java关键字
- java语言中有一些具有特殊用途的单词被称为关键字,当定义标识符时,不要让标识符和关键字相同,则将引起错误。
- java 的所有关键字都是小写的, TRUE,FALSE,NULL 都不是 java 关键字。但它们属于特殊的直接量,标识符也不能同名
- goto和const是保留字,表示现在用不到,以后可能会用到
数据类型的分类
基本类型:
基本类型分为boolean类型和数值类型
数值类型分为整数类型和浮点类型
整数类型:byte,short,int,long,char
浮点类型:float,double
char 代表字符型,实际上字符型也是一种整数类型,相当于无符号整数类型
引用类型
引用类型:类,接口,数组,null类型
空引用( null )只能被转换成引用类型 不能转换成基本类型,因此不要把一个 null值赋给基本数据类型的变量
Java 只包含这8种基本数据类型,需要注意的是,字符串不是基本数据类型,字符串是一个类,也就是一个引用数据类型
- 各类型的占位数:
byte: 一个 byte 类型整数在内存里占8位,
short: 一个short 类型整数在内存里占 16 位,
int: 一个 int 类型整数在内存里占 32 位,
long: 一个long类型整数在内存里占 64 位 - 这里说一下bit和Byte的关系:
1Byte(字节)=8bit(位)
所以,也可以说一个byte类型整数占一个字节
1024Byte=1KB
1024KB=1MB
1024MB=1GB
1024GB=1TB
- 在不同编码里,字符和字节的对du应关系不同:
1、ASCII码中,一个数字或者英文字母(不分大小写)占一个字节的空间,一个中文汉字(含繁体)占两个字节的空间。
2、UTF-8编码中,一个数字或一个英文字母(不分大小写)等于一个字节,一个中文(含繁体)等于三个字节。
3、Unicode编码中,一个数字或一个英文字母(不分大小写)等于两个字节,一个中文(含繁体)等于两个字节。符号:英文标点占一个字节,中文标点占两个字节。举例:英文句号“.”占1个字节的大小,中文句号“。”占2个字节的大小。
4、在GBK中,一个数字或英文字母(不分大小写)占一个字节,一个中文(含繁体)占两个字节
Java 中整数值有4种表示方式:十进制、二进制、八进制和十六进制,其中二进制的整数以0b或者0B开头;八进制的整数以0开头:十六进制的整数以 0x 或者 0X 开头,其中 10-15 分别以 a-f (大小写均可)来表示。
由于计算机底层保存字符时,实际是保存该字符对应的编码,因此 char 类型 的值也可直接作为整型值来使用,它相当于 16 位的无符号整数 表数范围是0~65535。
char类型的变量,值完全可以参与加减乘除等数学运算,也可以比较大小,实际上都是用该字符对应的编码参与运算。
三个特殊的浮点类型:正无穷大,负无穷大,非数
- 正无穷大:正浮点数除以零,用double或者float类的POSITIVE_INFINITY表示,正无穷的的数都是相等的
- 负无穷大:负浮点数除以零,用double或者float类的NEGATIVE_INFINITY表示,负无穷大的数都是相等的
- 非数:0.0除以0.0或者是对一个负数开平方,用double或者float类的NaN表示,不和任何值相等,甚至和NaN也不相等
为了直观的分辨过大的数值,java7引入了一个新的功能:无论值整数还是浮点数,可以用下划线分隔。 例:
int a = 0B0010_0000_0010_0001;
double pi = 3.14_15_92_6;
System.out.println(a);
System.out.pringln(pi);
类型转换
类型转换分为自动类型转换和强制类型转换
- 自动类型转换:表数范围小的值赋给另一个表数范围大的值,系统可以进行自动类型转换。
- 任何基本类的值和字符串值进行连接运算时,基本类型的值将自动类型转换为字符串类型。所以可以把基本类型的值和一个空字符串进行连接(+不仅可以用来加法运算,也可以作为字符串连接符使用)
System.out.println(1+2+"abc");//结果:3abc
System.out.println("abc"+1+2);//结果:abc12
- 强制类型转换的语法格式是 (targetType )value ,强制类型转换的运算符是圆括号 () 。
- 图中箭头左边类型的直接量可以直接赋给箭头右边类型的变量,这是自动类型转换。如果需要把图中箭头右边类型的直接量赋给箭头左边类型的变量,则需要强制类型转换。
- 关于字符串直接量有一点需要指出,当程序第一次使用某个字符串直接量时,Java 会使用常量池 (constant pool)来缓存该字符串直接量 ,如果程序后面的部分需要用到该字符串直接量时 Java 会直接使用常量池 (constant pool)中的字符串直接量。
运算符
- 算术运算符
- +:加法运算符
- -:减法运算符
- *:乘法运算符
- /:除法运算符
- %:求余运算符
- ++:自加
自加运算符既可以出现在操作数的左边,也可以出现在操作数的右边 但出现在左边和右边的效果是不 一样的。如果把++放在左边,则先把操作数加1,然后才把操作数放入表达式中运算;如果把++放在右边,则先把操作数放入表达式中运算,然后才把操作数加1。
int a = 5;
System.out.println(a++);//a=5
int a = 5;
System.out.println(++a);//a=6
- –:自减
用法和自加相似
自加和自减只能用于操作变量,不能用于操作数值直接量、常量或表达式。例如,5++,6- -等写法都是错误的。
- 赋值运算符
赋值运算符用于为变量指定变量值,java使用=作为赋值运算符
可以把变量当成一个可盛装数据的容器,而赋值运算就是将被赋的值"装入"变量的过程,赋值运算符是从右向左执行计算的,程序先计算得到 = 右边的值,然后将该值"装入" = 左边的变量,因此赋值运算符( = )左边只能是变量。 - 位运算符
- 拓展后的赋值运算符
- 逻辑运算符
关于这三种运算符,感兴趣的朋友可以去搜一下,我就不再赘述了。 - 比较运算符
(>):大于
(<):小于
(>=):大于等于
(<=):小于等于
(==):等于 用来比较,区别于 = 赋值运算符
基本类型的变量、值不能和引用类型的变量、值使用进行比较, boolean 类型的变量、值不能与其他任意类型的变量、值使用进行比较;如果两个引用类型之间没有父继承关系,那么它们的变量也不能进行比较。
!=:不等于 - 三目运算符
三目运算符只有一个:(?:)
我们直接上例子:
String str = 5 > 3 ? "5大于3 " : "5不大于3 ";
System.out.println(str); //输出5大于3
表达式 ? 值1 : 值2
表达式为ture,结果为值1,表达式为false,结果为值2
运算符优先级
上一行运算符的优先级大于下一行运算符的优先级