IDEA开发环境
运行原理
配置环境变量的作用是能够在命令行的任意目录下启动程序。老版本java的jdk不会自动创建环境变量,需要自己配置,新版本在安装时自动配置好。
快捷键
注释
单行注释(解注释)
ctrl+/
多行注释(解注释)
ctrl+shift+/
输出字符
单字符输出用单引号
字符串输出用双引号
一字节=8比特,1byte=8bit
字符存储
将字符转换为ASCII对应的整型进行存储,如’a’+10=107
A->65,a->97,0->48
数据类型
整型
byte 1 (-128~127)
short 2
int 4 (十位数)(默认)
long 8 (19位数)
浮点型
float 4
double 8 (默认)
字符型
char 2 (0~65535)
布尔型
boolean 1
自动类型转换
小范围类型可以自动转换为大范围类型
表达式中,小范围类型变量会自动转换成大范围类型变量
强制类型转换
类型范围大的变量不能直接赋值给小范围类型变量,因此需要强制转换。
强制转换可能导致数据溢出,浮点型转为整型直接丢掉小数部分
运算符
两整数相除还是整数
字符串可用"+"连接
自增自减
三元运算符
条件表达式?值1:值2
运算符优先级
&&高于||,()最高
循环语句
if,switch
if性能高于switch,一般用前者,switch的表达式取值不可为double,float,long
switch具有穿透性
for,while
直到循环几次用for,不知道用while
break,continue
break表示跳出并结束当前所在循环的执行
continue表示跳出当前循环的当次执行,直接进入循环的下一次执行
外部循环标签
随机数
Random r = new Random();
int data = r.nextInt(10);//0-9的随机数
数组
定义方法
静态初始化
int[] ages = {21,25,36};
double[] sources= {21,25.3,36.22};
动态初始化
int[] ages = new int[3]; //这个3是数组长度,数组值默认为0
数组参数传递
数组名存储的是地址,而不是值,对同一地址数组进行修改,会修改对应地址的数据
数组拷贝
一个一个复制,不能直接利用变量名复制,那样本质上还是指向同一个数组。
对象
1.this解决变量名冲突问题
2.类创建好后,会默认创建一个无参数构造器,如果自己手动创建了有参数构造器,系统不会再创建无参数构造器,所以最好再自己创建一个无参数构造器
面向对象的三大特征
封装,继承,多态
类
static
代表属于类的变量或者方法,不加static修饰的就是对象的变量或者方法,即实例变量或实例方法。类变量和类方法可以通过类名或者对象名访问,而实例变量和实例方法只能通过对象名访问。
public,protected,private等修饰词
常用API
objects.equals()
字符串的equals方法默认已经重写,可以直接调用来比较两个字符串内容是否相同(equals默认是比较地址是否相同)
objects.equals方法会先进行非空判断,再进行比较,更加安全
包装类
自动装箱,自动拆箱
将基本类型的变量包装成对象,因为i泛型和集合只能存对象而不能存基本变量,所以要用包装类
toString
将基本类型的数据转换为字符串
Integer.parseInt(String)
将字符串类型的变量转换为基本类型
Double.parseDouble(String)
StringBuilder
代表可变字符串对象,相当于一个容器,更适合做字符串修改操作
append
添加数据并返回对象
reverse
将对象内容反转
length
返回对象内容长度
StringJoiner
与StringBuilder类似,但不仅能提高字符串的操作效率,还能是某些场景下代码更简洁
StringJoiner(“间隔符”,“开始符”,“结束符”)
Math
Math.ceil(a)
Math.floor(a)
Math.abs(a)
Math.round(a)
Math.random(a) //0-1左闭右开[0.0,1.0)
Math.max(a,b)
Math.min(a,b)
Math.pow(a,b)
System
System.currentTimeMillis() //从1970-1-1 0:0:0开始走到此时此刻的总的毫秒值
BigDecimal
BigDecimal.ValueOf() //将小数转为BigDecimaal,防止小数运算时精度出问题
Date
Lambda表达式
用于简化函数式接口(接口,且内部只有一个抽象方法)的匿名内部类
集合
ArrayList与LinkList都有序,可重复,有索引
ArrayList
底层是数组,数组中各元素的地址在内存中是连续的,因此查询速度快,而增加元素和删除元素的速度慢
LinkList
链表的各节点在内存中不是连续存储的,因此查询速度慢,但增加元素和删除元素的速度快
输入/输出流
字节流
以字节为单位进行输入输出,但是英文字符是1字节,中文字符是3字节,所以在写入读取中文时可能会出现乱码
字符流
以字符为单位进行输入输出,所以在写入读取中文时不会出现乱码