注释
单行注释
//单行注释
多行注释
/*多行注释*/
文档注释(JavaDoc)
/**
*文档注释
*/
创建:/**+enter
参数信息
@author 作者名
@version 版本号
@since 指出需要最早使用的jdk版本
@param 参数名
@return 返回值情况
@throws 异常抛出情况
生成JavaDoc文档
DOS控制台命令:javadoc -encoding UTF-8 -charset UTF-8 Doc.java
IDEA生成:选项卡Tools\Generate JavaDoc。//键入Locale: zh_CN; Other command line arguments: -encoding UTF-8 -charset UTF-8
标识符
规定:必须以字母、$、_开头,其后可以是以上类型或者数字
关键字
规定:关键字不能用于变量名或方法名
关键字 | 含义 |
---|---|
abstract | 表明类或者成员方法具有抽象属性 |
assert | 断言,用来进行程序调试 |
boolean | 基本数据类型之一,声明布尔类型的关键字 |
break | 提前跳出一个块 |
byte | 基本数据类型之一,字节类型 |
case | 用在switch语句之中,表示其中的一个分支 |
catch | 用在异常处理中,用来捕捉异常 |
char | 基本数据类型之一,字符类型 |
class | 声明一个类 |
const | 保留关键字,没有具体含义 |
continue | 回到一个块的开始处 |
default | 默认,例如,用在switch语句中,表明一个默认的分支。Java8 中也作用于声明接口函数的默认实现 |
do | 用在do-while循环结构中 |
double | 基本数据类型之一,双精度浮点数类型 |
else | 用在条件语句中,表明当条件不成立时的分支 |
enum | 枚举 |
extends | 表明一个类型是另一个类型的子类型。对于类,可以是另一个类或者抽象类;对于接口,可以是另一个接口 |
final | 用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量 |
finally | 用于处理异常情况,用来声明一个基本肯定会被执行到的语句块 |
float | 基本数据类型之一,单精度浮点数类型 |
for | 一种循环结构的引导词 |
goto | 保留关键字,没有具体含义 |
if | 条件语句的引导词 |
implements | 表明一个类实现了给定的接口 |
import | 表明要访问指定的类或包 |
instanceof | 用来测试一个对象是否是指定类型的实例对象 |
int | 基本数据类型之一,整数类型 |
interface | 接口 |
long | 基本数据类型之一,长整数类型 |
native | 用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的 |
new | 用来创建新实例对象 |
package | 包 |
private | 一种访问控制方式:私用模式 |
protected | 一种访问控制方式:保护模式 |
public | 一种访问控制方式:共用模式 |
return | 从成员方法中返回数据 |
short | 基本数据类型之一,短整数类型 |
static | 表明具有静态属性 |
strictfp | 用来声明FP_strict(单精度或双精度浮点数)表达式遵循[IEEE 754](https://baike.baidu.com/item/IEEE 754)算术规范 |
super | 表明当前对象的父类型的引用或者父类型的构造方法 |
switch | 分支语句结构的引导词 |
synchronized | 表明一段代码需要同步执行 |
this | 指向当前实例对象的引用 |
throw | 抛出一个异常 |
throws | 声明在当前定义的成员方法中所有需要抛出的异常 |
transient | 声明不用序列化的成员域 |
try | 尝试一个可能抛出异常的程序块 |
void | 声明当前成员方法没有返回值 |
volatile | 表明两个或者多个变量必须同步地发生变化 |
while | 用在循环结构中 |
八大基本数据类型
java中数据必须先声明后使用,一般声明的同时或之后初始化(赋初值)
整数
int num1=10;//最常用。范围:-2_147_483_648~2_147_483_647(约±21亿)
byte num2=20;//范围:-128~127
short num3=30;//范围:-32768~32767
long num4=30L;//规定:需在赋值数字后加L。范围:-9_223_372_036_854_775_808~9_223_372_036_ 854_775_807(-263~263-1)
数字之间可以用_分隔,不影响数值大小
整数拓展:进制
-
二进制(0b)
0b10=2
-
八进制(0)
010=8
-
十进制
10=10
-
十六进制(0x)(0~9,A~F)
0x10=16
浮点数(小数)
-
float num5=50.1F;//规定:需在赋值数字后加F。负数范围:-3.4028235E+38~-1.4E-45。正数范围:1.4E-45~3.4028235E+38
-
double num6=60.123456789;负数范围:-1.7976931348623157E+308~-4.9E-324。正数范围:4.9E-324~1.7976931348623157E+308
java中输出浮点数,系统会至少保留1位小数
浮点数拓展:精度
因浮点数存在精度误差,最好完全使用浮点数进行比较,推荐数学工具类BigDecimal
字符
char name=‘畅’;//取值范围:’\u0000’~‘uffff’(16进制);对应的10进制数值0~65535
字符拓展
本质是编码数字
所有字符本质是数字,每个字符对应Unicode表中的数字
a=97; A=65
转义字符
转义字符 | 意义 |
---|---|
\a | 响铃(BEL) |
\b | 退格(BS),将当前位置移到前一列 |
\f | 换页(FF),将当前位置移到下页开头 |
\n | 换行(LF),将当前位置移到下一行开头 |
\r | 回车(CR),将当前位置移到本行开头 |
\t | 水平制表(HT)(跳到下一个TAB位置) |
\v | 垂直制表(VT) |
\ | 代表一个反斜线字符"Y |
’ | 代表一个单引号(撇号)字符 |
" | 代表一个双引号字符 |
? | 代表一个问号 |
\0 | 空字符(NUL) |
\ddd | 1到3位八进制数所代表的任意字符 |
\xhh | 十六进制所代表的任意字符 |
\101 | 使用3位八进制数字表示0~377范围内(10进制的0~255)的256个字符 |
\u4e01 | 使用4位16进制数字表示\u0000~\uffff范围内的字符 |
字符串
String namea=“曹龙畅”;S必须大写
布尔
boolean b1=true;
boolean b2=false;
java中,布尔类型与其它数据类型不可转换
类型转换
习惯:运算中,不同类型数据要转换同一数据类型
自动转换(隐式转换)
低精度转换为高精度,或同等精度小范围转换为大范围(不损失精度):byte, short, char->int->long->float->double
若未赋值进行自动转换,合法的不同类型数据运算前(不含bollean类型的基本数据)默认进行自动转换。特殊:表达式只有byte和short两种类型数据的运算,会自动转换成int类型。
强制转换(显示转换)
格式:(要转换的数据类型关键词)变量名。表达式中有其一即可,不用全部强制转换
高精度转换为低精度,或同等精度大范围转换为小范围(会损失精度,或内存溢出)
字符串类型转换
字符串转换为数值
转换的方法 | 功能说明 |
---|---|
Byte.parseByte(String s) | 将数字字符串转换为字节型数据 |
Short.parseShort(String s) | 将数字字符串转换为短整型数据 |
integer.parseint(String s) | 将数字字符串转换为整型数据 |
Long.parseLong(String s) | 将数字字符串转换为长整型数据 |
Float.parseFloat(String s) | 将数字字符串转换为浮点型数据 |
Double.parseDouble(String s) | 将数字字符串转换为双精度型数据 |
Boolean.parseBoolean(String s) | 将字符串"true"或"false"转换为布尔型数据(这里不区分大小写) |
数值转换为字符串
格式:String 字符串变量名=""+数值变量
变量
类变量
位置:相对主类的大括号内
格式:static 数据类型 变量名=初始值;
若未初始化,默认值为0、false、null(空值)。
实例变量
位置:从属于对象。相对主类的大括号内
格式:数据类型 变量名;
若未初始化,默认值为0、false、null(空值)。
局部变量
位置:相对局部类的大括号内
格式:数据类型 变量名;
若未初始化,则无法输出。
常量
格式:final 数据类型 常量名=值; 或数据类型 final 常量名=值;
常量及变量命名规范(习惯)
习惯:见名知意
常量名:字母大写及下划线分隔
类名:单词首字母大写
其余:首单词的首字母小写,其后单词首字母大写。(驼峰原则)
运算符
算术运算符: +, -, *, /, %(模(取余的意思)),++, --。//i++:先运算后自增。++i:先自增后运算。
赋值运算符:=
扩展赋值运算符:+=、=
关系运算符:>,<,>=,<=,==,!=
逻辑运算符: &&、||、!、^(异或,相同为假,不同为真)
位运算符: >>、<<、>>>、&、|、^、~。//<<(左移1位,相当于十进制数值*2,>>同理)
条件运算符?︰(a>b?true:false)
扩展赋值运算符:+=,-=,*=,/=。//a+=b相当于a=a+b
输出连字符:+
其它运算符:.(分量)、[](下标)、instanceof(实例)、new(内存分配)、()(强制类型转换)、()方法调用
- 拓展:java含逻辑运算符表达式运算,若先执行的运算元已确定结果,后续运算元不再执行,即短路运算。特殊的,位运算符不会有短路运算。
- 运算符优先级(不同级)及结合性(同级)。优先级高低:小括号>一元运算符>算数运算>关系运算、逻辑运算>赋值运算。结合性顺序:大部分为左结合性(从左到右);特殊的赋值运算、一元运算等为右结合性。
- 习惯:合理添加()增加程序可读性
数组
数组的声明和初始化
数组的实质是引用, 数组元素存放在堆内存,对应的首地址存放在栈内存。数组也是对象。
数据类型[] 数组名=new 数据类型[数组长度(length)];
int[] i1=new int[5];//声明并分配内存
int[] i2=new int[]{1,2,3,4,5};//声明并分配内存、初始化
int[] i3={6,7,8,9,10};//同上,new int[]可省略
数组元素的访问
数组名[序号]//序号从0开始,最大值为length-1
访问数组的长度:数组名.length
包
声明:package 包名1[.包名2[.包名3]]
习惯:包名一般用公司路径倒置的域名
导入包
import 包名1[.包名2[.包名3]].类名;(IDEA默认导入系统包,无需操作)//引用该包下的所有类用通配符“*”代替类名
其它
语句:以分号结尾的表达式。“{}”中的语句为同一层次。