JavaSE复习总结(二)(转)

 

类和对象

类 
模板(对现实世界的抽象描述) 
通过使用属性来描述现实世界某种事物的特征,使用方法来描述行为。 
对象 
实例(现实世界中具体实例)

class 类名 {

private Type1 field1;
private Type2 field2 = value2;
prviate String name;
....
//无参构造器
public 类名() {
    this(value1, value3);   
}
//全参构造器
public 类名(Type1 field1, Type2 field2...) {
    this.field1 = field1;
    this.field2 = field2;
    // 通用的初始化
}
//将对象封装,对外界提供公共的get/set方法
// get/set方法

public void m1() {

}

public void m2() {

}   
.....
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26


构造器间可以使用this()实现连锁调用。 
构造方法:特殊方法,作用:在对象创建时自动执行一些初始化工作。 
特征: 
方法名与类名一致 
没有返回值类型,甚至连void也没有 
不能被final,static,synchronized,abstract等修饰 
不可以像普通方法那样随意调用,只能在对象创建的时候被调用一次 
引用变量间的传递也是值传递,不过是将变量中保存的地址复制过去。 
this指代当前对象。(变量的访问就近原则)

创建对象:对象只能保存在引用变量中,并且引用变量中保存的是对象的首地址而不是对象本体。 
操作对象实际是在操作对象的引用。 
通过使用引用调用对象的属性,方法。 
main() { 
类名 引用 = new 类名(); 
// 一个对象的创建过程 
// 1) 在永久区中检查要创建的对象所属的类的类模板是否存在 
// 2) 如果不存在, 则由类加载器执行加载(读取类.class文件), 如果存在, 则不加载了. 
类模板(属性的定义和方法代码) 
// 3) 依据类中的属性的定义,在GC区中开辟适当的空间 
// 4) 把此空间清0 
// 5) 如果有显式赋值,则执行显式赋值 
// 6) 执行构造器,进一步初始化 
// 7) 返回对象在GC区中的首地址

引用.成员名      
  • 1
  • 2

}

匿名对象:不将对象的地址值保存到引用变量中。 
对象关联:以一个类的对象,作为另一个类的属性,从而形成两个类的关联。

package,import关键字 
UML

类和对象需要大量的练习,参照笔记。

数组

数组 : 解决批量数据的存储 
数组就是一个对象,数组中的元素是对象的成员变量 
声明 : 
元素类型[] 数组名(本质来看,是一个数组型的引用变量,保存着数组对象的首地址); 
创建数组对象 : 
数组名 = new 元素类型[数组长度]; 
数组元素的使用 
数组名[下标] = 值; 
System.out.println(数组名[下标]);

数组的动态创建:

元素类型[] 数组 = new 元素类型[长度]; // 如果是引用数组, 全部是空洞, 如果是基本类型数组,全部是0 
如果是空洞,然后调用该对象的方法会产生空指针异常。

数组的静态创建 
元素类型[] 数组 = {值1, 值2, 值3…}; 
元素类型[] 数组 = new 元素类型[] {值1, 值2, 值3…};

数组遍历 : 
增强for循环(注意只可以使用增强for循环进行遍历,若是还进行其他操作,必须使用经典for循环) 
for (元素类型 变量 : 数组名) { 
访问变量相当于访问数组中每个元素值 
}

int[] arr = {3, 8, 2, 0, 9, 7, 4}; 必须一行

for (int var : arr) { 
System.out.println(var); 

//找最值(两种-通过值 
- 通过索引) 
int max = arr[0]; 
for (int var : arr) { 
if (var > max) { 
max = var; 


int maxIndex = 0; 
for (int i = 0; i < arr.length; i++) { 
if (arr[i] > arr[maxIndex]) { 
maxIndex = i; 


int maxValue = arr[maxIndex];

// 检索 
int key = 70; 
int index = -1; 
for (int i = 0; i < arr.length; i++) { 
if (arr[i] == key) { 
index = i; 
break; 

}

if (index == -1) { 
System.out.println(“搜索的数据不存在”); 
} else { 
System.out.println(“下标是” + index); 
}

// 取出数组中能被3整除的 
int[] newArr = new int[arr.length]; 
int count = 0; 
for (int i = 0; i < arr.length; i++) { 
if (arr[i] % 3 == 0) { 
newArr[count] = arr[i]; 
count++; 


int[] child = new int[count]; 
for (int i = 0; i < count; i++) { 
child[i] = newArr[i]; 

newArr = null;

// 扩容 
int[] bigger = new int[比原来大]; 
for (int i = 0; i < arr.length; i++) { 
bigger[i] = arr[i]; 
}

arr = bigger; // 如果是引用数组,则会产生大量的空洞

// 排序 
for (int i = 0; i < arr.length - 1; i++) { 
for (int j = 0; j < arr.length - 1 - i; j++) { 
if (arr[j] > arr[j + 1]) { 
int tmp = arr[j]; 
arr[j] = arr[j + 1]; 
arr[j + 1] = tmp; 



//数组复制(创建新数组–>复制所有元素) 
//获取子数组(创建一个新数组–>复制需要的元素)遍历的时候以容量小的数组为准 
//数组反转

大量代码—>数组玩法(一)(二)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值