基础部分
标示符命名规范和规则
1.类名
首字母大写,之后每个词的首字母大写
2.变量名和对象名
可用字符:字母、数字、下划线、美元符号’$’
首字符不能使用数字,推荐使用小写字母
采用驼峰命名法。首字母小写,之后每个词的首字母大写
可以用中文命名,但不推荐
3.包名
全用小写字母
4.常量
全使用大写字母,单词间使用’_’分割
注意:Java大小写敏感,不能使用Java的关键字、字面量和保留字命名
保留字: goto const
字面量: true false
关键词 | ||||
---|---|---|---|---|
abstract | assert | boolean | break | byte |
case | catch | char | class | const |
continue | default | do | double | else |
enum | extends | final | finally | float |
for | gote | if | implements | import |
instanceof | int | interface | long | native |
new | package | private | protected | public |
return | stictfp | short | static | super |
switch | this | thorw | throws | synchronized |
transient | try | void | volatile | while |
数据类型分类
基本数据类型
整形
名称 | 字节长度 | bits | 取值范围 |
---|---|---|---|
byte | 1 byte | 8 bits | [-2^7, +2^7) |
short | 2 byte | 16 bits | [-2^15, +2^15) |
int | 4 byte | 32 bits | [-2^31, +2^31) |
long | 8 byte | 64 bits | [-2^63, +2^63) |
浮点型
名称 | 字节长度 | bits | 取值范围 |
---|---|---|---|
float | 4 byte | 32bit | [-2^31, +2^31) |
double | 8 byte | 64bit | [-2^63, +2^63) |
字符型
名称 | 字节长度 | bits | 取值范围 |
---|---|---|---|
char | 2 byte | 16 bit | [\u0000, \uffff] |
常用转义字符
‘\n’、’\t’、’\”等。
布尔型
boolean:true/false
引用数据类型
数组、类对象等都是引用数据类型
基本数据类型的初始化和使用注意点
1.byte、short、int、char都可以用整数直接量直接赋值:byte = 2;
2.当没有特别说明时。byte、short、int、char在进行计算时会先转换成int类型变量进行计算,结果也为int型
byte b1 = 1;
byte b2 = 2;
byte b3 = b1 + b2;//编译错误"b1 + b2"的结果为int型,short、char同理
3.float定义时需要在值末尾添加'f'/'F'
,long变量定义是值末尾需要添加’l’/’L’`
4.精度丢失问题
int i = 2;
double d = 1.00000001;
System.out.println(i-d);
/*
*output:
*0.9999999900000001
*/
上述问题出现的原因在于计算机底层二进制对小数部分的表现支持不是很完善,所以当我们计算的数据涉及到小数位的精确计算时,我们一般都使用Bigdecimal
类进行计算。
类型转换
自动转换
小类型向大类型自动转换。比如byte、short向int自动。子类引用类型向父类引用类型自动转换
强制转换:大类型向小类型强制转换。
int向byte等强制转换(注意可能会有精度丢失)
父类的引用类型强制转换成子类的引用类型(注意需要使用instenceof来判断两个类型是否有继承关系)
隐式转换:就是自动类型转换
显式转换;就是强制类型转换
基本类型对应包装类
byte ----> Byte
short ----> Short
int ----> Integer
long ----> Long
float ----> Float
doule ----> Double
char ----> Charter
boolean ----> Boolean
自动拆装包
Java在JDK1.5后开始支持对基本类型变量执行自动装包和拆包
自动拆装包的行为发生在编译期,由编译器支持
注释:Java有三种注释方法
1.单行注释
由"//"开头的注释语句,注释当前行的所有语句
2.多行注释
由"/* ~ */"包裹着的注释语句,注释当前多行语句
3.文档注释
由"/** ~ */"包裹着注释语句,注释当期的多行语句
文档注释的内容可以由"javadoc"自动生成java的HTML文档说明
运算符
分类
算术运算符:’+’,’-‘,’*’,’/’
关系运算符:> , < , <= , >= , == , !=
逻辑运算符:’&&’,’||’,’!’
三元运算符:?:
位运算符:’&’ , ‘|’ , ‘^’
位移运算符:’<<’ 有符号左移, ‘>>’ 有符号右移, ‘>>>’无符号右移
赋值运算符:’+=’,’-=’,’*=’,’/=’~~~~
自增自减运算符:’++’,’–’
流程控制
顺序语句
分支语句
if(){},if(){} else(){}, if(){} else(){} if(){}
switch~case
switch语句在case中没有添加break存在贯穿现象
循环语句
1.for(语句1;语句2;语句3){语句4}
语句1,2,3都可以省略,语句2默认为true
语句1只执行一次,一般为赋值语句。
语句2一般为关系判断语句,判断是否执行语句4
语句3一般为判定条件的改变语句,也可以在词句中放入多句其他语句
执行顺 序语句1,然后2-4-3-2~~~循环
2.while(语句1){语句2}
while循环语句中,语句1为是否执行语句2的判断语句
3.do{语句1}while(语句2);
语句2为语句1的循环判断语句
循环的三要素:
循环变量的初始化
循环条件的设置
循环变量的变化
while与do~while的区别
如果相同的循环判定条件且刚进入循环就为false,则do~while循环会执行一次循环体
而while循环会在判断后直接跳出循环
简单的说就是do~while会至少执行一次循环体,而while可能一次循环体都不会执行
三种循环的使用条件
for循环: 循环次数已知的情况
while循环: 若则~
do~while是:直到~~~
数组
数组是一类相同对象按照一定顺序的集合体,我们可以使用下标来访问数组中的元素
数组的声明: 对象类型[] 数组引用名
数组的初始化
1.动态初始化
在数组初始化完毕后,对数组中每个元素分别进行初始化和赋值
2.静态初始化
在数组初始化完毕后,将所有元素初始化赋值语句,放在一起(一个大括号中)
3.默认初始化
默认初始化的意思为只初始化数组,数组中元素进行默认初始化,
多维数组——可以看做时数组的数组。比如二维数组可以说是XX数组的数组
数组初始化默认值按照数组的类型不同不同
基本类型数组 | 初始化数值 |
---|---|
byte,short,int | 0 |
long | 0L |
float | 0.0f |
double | 0.0 |
char | \u0000 |
boolean | false |
引用类型数组 | null |
数组的复制
需要对数组中所有元素进行遍历然后复制进新的数组
注意点:java中基本数据类型是值传递,而引用数据类型时引用传递
方法:
1.System.arraycopy(Object srt, int srcPos, Object dest, int destPos, int length)
2.Arrays.copyOf()
数组的遍历
1.for循环遍历
2.while循环
3.do~while循环
4.for each循环
数组的排序
1.插入排序
2.选择排序
3.冒泡排序
4.归并排序
5.快速排序
6.希尔排序
7.基数排序
8.箱排序
函数(方法)定义
方法的五要素
访问修饰词,返回类型,方法名,参数列表,方法体
访问修饰符:
>public 公用的 任何地方都可以使用
protected 保护的 本类,子类,同包类
默认 默认的 本类,和同包类
private 私有的 本类
return关键词在方法中的作用
1.返回类型为void
调用return可以终止当前方法
2.返回类型不为void
单独调用return终止当前方法
return一个返回类型的对象,同时终止当前方法