对象的成员变量的默认值规则
数据类型 |
明细 |
默认值 |
基本类型 |
byte、short、char、int、long |
0 |
float、double |
0.0 |
boolean |
false |
引用类型 |
类、接口、数组、String |
null |
对象的内存
对象存放在堆内存中
Car c = new Car();
中变量c存储的是对象new Car()
在堆内存中的地址。
c.name
成员变量的数据存储在对象开辟出的内存中,也存在于堆内存中。
注意:垃圾回收
当堆内存中的类对象或数组对象,没有被任何变量引用(指向)时,就会被判定为内存中的“垃圾”。
Java存在自动垃圾回收器,会定期进行清理。
this关键字
作用:出现在成员方法、构造器中代表当前对象的地址,用于访问当前对象的成员变量、成员方法。
如:
Class Car{ private String name; public class Car(String name){ this name = name; } }
|
封装
封装是面向对象的三大特征之一,合理隐藏,合理暴露。一般会把成员变量使用private隐藏起来。通过getter和setter方法暴露其访问。
封装加强了程序代码的安全性。适当的封装可以提升开发效率,同时可以让程序更容易理解与维护。
如:
Class Car{ private String name; private int year; public setName(String name){ this name = name; } public getName(){ return name; } }
|
成员变量和局部变量的区别
区别 |
成员变量 |
局部变量 |
类中位置不同 |
在类中,方法外 |
常见于方法中 |
初始化值不同 |
有默认初始化值没有,使用之前需要完成赋值 |
没有,使用之前需要完成赋值 |
内存位置不同 |
堆内存 |
栈内存 |
生命周期不同 |
随着对象的创建而存在,随着对象的消失而消失 |
随着方法的调用而存在,随着方法的运行结束而消失 |
作用域 |
|
在所归属的大括号中 |
常用类和方法
String
常用方法
方法 |
说明 |
equals() |
比较两个字符串的内容 |
equalsIgnoreCase() |
不分大小写比较两个字符串的内容 |
charAt(int index) |
获取某个索引位置的字符 |
toCharArray() |
将字符串转换为字符数组 |
substring(int beginIndex, int endIndex) |
截取一个索引区间的字符 |
substring(int beginIndex) |
从当前索引截取到末尾 |
replace(CharSequence target, CharSequence replacement) |
替换谋字符为新的字符 |
contains(CharSequence s) |
判断字符串中是否包含某个字符 |
startWith(String prefix) |
判断字符串是否以某个字符开始 |
split(String s) |
使用字符串中某个字符隔开字符串为字符串数组 |
ArrayList
常用方法
方法 |
说明 |
add(E element) |
集合添加元素 |
add(int index, E element) |
给指定索引插入数据 |
get(int index) |
获取某个索引对应的集合元素 |
size() |
获取集合大小 |
remove(object o) |
删除集合中的元素,返会是否成功 |
set(int index, E element) |
修改集合中某个索引对应的值 |
StringBuilder
常用方法
方法 |
说明 |
append(Objiect o) |
添加任意类型数据,可以连续添加 |
reverse() |
反转内容 |
length() |
返回内容长度 |
toString() |
转换为字符串类型 |
Object
常用方法
方法 |
说明 |
toString() |
默认是返回当前对象在堆内存中的地址信息:类的全限名@内存地址,用来重写返回对象的内容信息 |
equals() |
默认是比较当前对象与另一个对象的地址是否相同,相同返回true,不同返回false,类重写后返回对象的内容是否相等 |
Objects.equale(Object o, Object o) |
比较内容是否相同,更安全 |
System
常用方法
方法 |
说明 |
eurrentTimeMillis() |
返回当前时间(以毫秒为单位) |
arraycopy() |
数组拷贝,(被拷贝数组,开始的位置,拷贝数组,拷贝到的位置,拷贝几个) |
exit(int status) |
终止当前运行的 Java 虚拟机,非零表示异常终 |
Math
常用方法
方法 |
说明 |
Math.abs(-1) |
获取绝对值,返回值为1 |
Math.ceil(1.2) |
向上取整,返回值为2 |
Math.floor(1.7) |
向下取整1,返回值为1 |
Math.round(4.6) |
四舍五入,返回值为5 |
Math.max(1,2) |
获取两个int中最大值,返回值为2 |
Math.pow(2,2) |
返回a的b次幂,返回值为4 |
Math.random() |
返回0.0-1.0的随机数 |
BigDecimal
常用方法
方法 |
说明 |
valueOf(Double d) |
将一个double类型转换为BigDecimal |
add(BigDecimal b) |
加 |
subtract(BigDecimal b) |
减 |
multiply(BigDecimal b) |
乘 |
divide(BigDecimal b) |
除 |
divide(除数,保留位数,舍入方式) |
如果除不尽使用 |
Date
常用方法
方法 |
说明 |
getTime() |
获取时间毫秒值 |
new Date(long time) |
时间毫秒值转换为时间对象 |
setTime() |
设置日期对象的时间为当前时间毫秒值对应的时间 |
常用方法
方法 |
说明 |
new SimpleDateFormat(pattern) |
日期格式化,可以用来把日期时间格式化成为我们想要的形式如:”yyyy-MM-dd HH:mm:ss” |
format(Date date) |
格式化日期对象或毫秒值返回格式化后的字符串 |
parse(String str) |
解析字符串时间成为日期对象 |
Calendar
常用方法
方法 |
说明 |
get(Calendar.YEAR) |
获取年份 |
get(Calendar.MONTH) |
获取月,从0开始需要加1 |
get(Calendar.DAY_OF_MONTH) |
获取月(31)日 |
get(Calendar.DAY_OF_YEAR) |
获取年(365)日 |
getTime() |
获取Date日期对象 |
set(Calendar.YEAR,int year) |
修改日历的时间信息年 |
Arrays
常用方法
方法 |
说明 |
toString(arr) |
打印数组内容 |
sort(arr) |
数组升序排序 |
Arrays.sort(ages, new Comparator<Integer>(){ @Override public int compare(Integer o1, Integer o2) { return o2 - o1; } });
|
binarySearch(arr, key) 二分搜索技术(数组必须排好序才支持)
public static int binarySearch(int[] arr, int data){ int left = 0; int right = arr.length - 1;
while (left <= right){ if (arr[(left + right)/2] > data){ right = (left + right)/2 - 1; }else if (arr[(left + right)/2] < data){ left = (left + right)/2 + 1; }else { return (left + right)/2; } } return -(left + 1); }
|
Collection
常用方法
方法 |
说明 |
boolean add(E e) |
添加元素 |
boolean remove(Object o) |
从集合中移除指定的元素 |
void clear() |
清空集合中的元素 |
boolean contains(Object o) |
判断集合中是否存在指定的元素 |
boolean isEmpty() |
判断集合是否为空 |
int size() |
集合的长度,也就是集合中元素的个数 |
Iterator iterator() |
返回此集合中元素的迭代器 |
List
特有方法
方法 |
说明 |
void add(int index,E element) |
在此集合中的指定位置插入指定的元素 |
E remove(int index) |
删除指定索引处的元素,返回被删除的元素 |
E set(int index,E element) |
修改指定索引处的元素,返回被修改的元素 |
E get(int index) |
返回指定索引处的元素 |
ArrayList
方法#ArrayList
LinkedList
特有方法
方法 |
说明 |
addFirst(E element) |
添加元素到第一位 |
removeFirst() |
删除第一位元素 |
addLast(E element) |
添加元素到最后一位 |
removeLast() |
删除最后一位元素 |
getFirst() |
返回此列表中的第一个元素 |
getLast() |
返回此列表中的最后一个元素 |
Set
- 元素存取无
- 没有索引、只能通过迭代器或增强for循环遍历
- 不能存储重复元素
常用方法同#Collection
HashSet
- 底层数据结构是哈希表
- 对集合的迭代顺序不作任何保证,也就是说不保证存储和取出的元素顺序一致
- 没有带索引的方法,所以不能使用普通for循环遍历
- 由于是Set集合,所以是不包含重复元素的集
常用方法同#Collection
LinkedHashSet
继承了HashSet,所以它是在HashSet的基础上维护了元素添加顺序的功能
哈希表和链表实现的Set接口,具有可预测的迭代次序
由链表保证元素有序,也就是说元素的存储和取出顺序是一致的
由哈希表保证元素唯一,也就是说没有重复的元素
常用方法同#Collection
File
File类的构造方法
方法 |
说明 |
File(String pathname) |
通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例 |
File(String parent, String child) |
从父路径名字符串和子路径名字符串创建新的 File实例 |
File(File parent, String child) |
从父抽象路径名和子路径名字符串创建新的 File实例 |