Java 的数据类型分为两大类
基本类型(primitive type):
整数:byte 1字节
short 2字节
int(默认)4字节
long 8字节
浮点数:float 4字节
double(默认)8字节
金融计算用的浮点数为BigDecimal
字符: char 2字节
ascii占1个字节
utf-8占3个字节
Unicode占两个字节
\u0000转译字符
\b退格键
\n换行
\r回车
\t制表
布尔值: boolean 1字节
if(a):表示如果a=true
引用类型(reference type):
类
接口
数组
进制
0b二进制
0x十六进制
0八进制
八进制的10是8
十六进制的10是16
# 类型转换
小数的优先级一定大于整数
由低到高
byte,short,char->int->long->float->double
运算中,不同类型的数据先转换为同一类型,然后进行运算
强制类型转换-------低转高
自动类型转换--------高转低 (低)高
变量
变量
type varName[=value];
java 是一种强类型语言,每个变量必须声明其类型
Java 变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域
type varName [=value][ {,varName[=value]}];
//数据类型 变量名=值;可以使用逗号隔开来声明多个同类型变量
注意事项
每个变量名都有类型,类型可以是基本类型,也可以是引用类型
变量名必须是合法的标识符
变量声明是一条完整的语句,因此每个变量名都必须以分号结束
变量作用域
类变量 写在static 后面的变量
实例变量:把static去掉
局部变量:在方法里面
变量名命名规范
所有变量、方法、类名:见名知意
类成员变量:首字母小写和驼峰原则:除了第一个单词以外的其余单词首字母大写:monthSalary
局部变量:首字母小写和驼峰原则
常量:大写字母和下划线:MAX_VALUE(单词比较多,加下划线)
类名:首字母大写和驼峰原则:Man,GoodMan
方法名:首字母小写和驼峰原则:run().runRun()
基本运算符
算术运算符 + - * / ++ – %
取余运算叫模运算:%
赋值运算符:=
逻辑运算符 :&&与 ||或 !非
位运算符: & |^ ~ >> <<
关系运算符:==:等于 !=instanceof > < >= <= !=
条件运算符 ?:
扩展运算符:+= -= *= /=
包机制
包机制:
域名倒写
防止命名冲突
package
import
为了更好地组织类,JAVA提供了包机制,用于区别类名的命名空间
包语句的语法格式为:
packag pkg1[.pkg2[.pkg3…]];
JAVA Doc
javadoc命令是用来生成自己API文档的
参数信息
@author:作者名
@version版本号
@since 指明需要最早使用的jdk版本
@return 返回值情况
@param 参数名
@throws 异常抛出情况
public class HelloWorld{
/**
*@author kuangshen
*@param args no
*@since 1.0
*@throws null
*/
public static void main(String[]args){
System.out.println("hello");
}
}
流程控制
Scanner: 用户交互Systemin
顺序结构:程序默认的结构,自上而下执行
选择结构:if 但选择结构
if -else双选择结构
if-else if -else 多选择结构
switch :jdk支持了字符串
case穿透现象
break
default默认
循环结构: while:尽量避免死循环
do…while
for
for each:增强for循环
break&continue :break:跳出循环
continue:终止当次循环,进行下一次循环
return:结束方法的运行
带标签的continue
方法
方法的定义:
修饰符 返回值 方法名(参数名){
return 返回值;
}
方法的调用:
方法名
对象.方法
方法重载:
名字相同,参数列表不同
命令行传参:给main方法传递参数
public class HelloWorld{
/**
*@author kuangshen
*@param args no
*@since 1.0
*@throws null
*/
public static void main(String[]args){
for(int i = 0;i< args.length;i++){
System.out.println(args[i]);
}
}
}
可变长参数:…必须放在最后一个参数
递归: 自己调用自己,给自己一个出口
面试常常问 必须会
数组
数组的定义:
new int[5]
{1,2,3,4,5}
必须是同一个类型
数组的使用:
通过下标拿到值
ArrayIndexoutofBounds:数组下标越界
增强for循环遍历
二维数组:
int[][]
Arrays工具类
排序算法:
冒泡排序
选择排序
插入排序
快速排序
归并排序
希尔排序
堆排序
基数排序
面向对象
类与对象:
类是对象的抽象:模板Class
对象是类的具体
构造方法:
构造的重载:
默认的无参构造
如果手动定义了有参构造就必须要手动再加一个无参构造
单例模式,需要构造器私有
new对象:
栈存放引用
堆存放具体的对象
封装:属性私有,get,set
继承:
extends
Object
子类拥有父类的全部特性
方法重写
this
super
java 是单继承,只能继承一个父类
多态:
父类的引用指向子类的对象 Person person = new Student();
instanceof关键字,如果匹配,可以进行类型之间的转换
修饰符:
public
protected
private
static
final
abstract
接口:
interface
约束,只能定义方法名
子类实现接口,必须重写其中的方法
只有一个方法的接口叫做函数式接口,可以使用lambda表达式简化
接口比抽象类更抽象
一个类可以实现多个接口
内部类:
局部内部类
静态内部类
匿名内部类(重点)
异常
Throwable:
Exception:
运行时异常:
1/0
ClassNotFound
NullPoint(空指针)
UnKownType
下标越界异常
检查型异常
Error:
AWT错误
JVM错误:
StackOverFlow:栈溢出
OutOfMemory:内存溢出
五个关键字:
try
catch(){}(先小后到)
finally{}
throw:方法内部手动抛出异常
throws:方法抛出异常(方法外部)
自定义异常:
继承Exception类即可