string转成对象_JAVA学习分享[008]——面向对象深化(一)

1.抽象类和抽象方法

使用abstract修饰符修饰的方法被称为抽象方法

抽象方法不能有方法体,子类必须重写抽象类中所有的抽象方法

抽象类中不一定包含抽象方法,但包含抽象方法的类一定是抽象类

抽象类不能实例化

抽象类可以有构造方法,提供给子类调用

抽象类包含成员:属性、方法、构造方法、静态方法、final修饰的方法只能被子类调用,不允许被子类重写、抽象方法

使用条件:父类的名称比较抽象,创建对象无意义。

1. 接口的详解

(1)接口中可以包含内容

非抽象方法(必须用default修饰)、抽象方法(public abstract方法)、属性(默认为public static final修饰的常量)

接口中不能包含构造方法,因为接口不是类

(2)接口和类的关系

类去实现接口中的抽象方法,即实现关系,用implements

一个类存在继承关系,又存在实现关系,继承在前实现在后

如果父类与接口中有完全相同的方法,子类实现父类的方法

如果父类与接口中有同名方法,要求父类和接口中的方法,在子类实现中构成重载

2. 内部类详解

(1) 内部类特点

内部类可以访问外部类的所有属性和方法,内部类与外部类有相同的属性时,访问外部类的属性时需要加上:外部类名.this.属性名

静态内部类:a.不允许访问外部类的非static属性;b.如果内部类中的方法为静态方法,那么内部类也必须为静态的

方法内部类:内部类相当于方法的局部变量,使用范围只能在方法中

匿名内部类:a.可以实现一个接口,还活着继承一个父类;b.只能实现一个接口;c.适合创建那种只使用一次的类,不重复使用。常见于图形界面编程GUI中。

(2) 内部类分类

成员内部类:内部类名 变量名=外部类对象.new 内部类名()

静态内部类:外部类名.内部类名 变量名=new 外部类名.内部类名()

方法内部类:new 内部类名().内部类方法名()

匿名内部类

3. String类常用方法_API文档阅读

(1) String类在API中String在的定义

String位于java.lang包中,String是不可变字符序列

String类相当于char类型的数组,数组长度一旦创建不能更改,value数组还使用了final修饰,字符串可以共享。

(2) 请你列举出String类的常用方法

1)Char charAt(int index):返回字符串中第index个字符

2)Boolean equalsIgnoreCase(String other):如果字符串与other相等(忽略大小写),返回true

3)Int indexOf(String str),lastIndexOf(从索引位置反向搜索(从0到指定位置)最后一个指定字符的位置)查找指定字符串出现的位置,找到返回索引,找不到返回-1

4)Int length():返回字符串长度

5)String replace(char oldChar,char newChar):返回一个新串,通过newChar替换字符串中的所有oldChar

6)Boolean startsWith(String prefix):如果字符串以prefix开始,则返回true

7)Boolean endsWith(String prefix):如果字符串以prefix结尾,则返回true

8)String substring(int beginIndex),String substring(int beginIndex,int endIndex)返回一个新字符串,该插串包含从原始字符串beginIndex到串尾或endIndex-1的所有字符

9)StringtoLowerCase()返回一个新的字符串,该字符串将原始字符串中的所有大写字母改成小写

10)StringtoUpperCase()返回一个新的字符串,该字符串将原始字符串中的所有小写字母改成大写

11)String trim()放回一个新字符串,该串删除了原始字符串头部和尾部的空格

5.String类和常量池

(1) String类的常用构造方法

1. public String() 空构造

String s1=new String();

System.out.println(s1);

2. public String(byte[] bytes) 把字节数组转成字符串

byte[] arr1={97,98,99,100};

String s2=new String(arr1);

System.out.println(s2);

3. public String(byte[] bytes,int index,int length) 把字节数组的一部分转成字符串

byte[] arr2={97,98,99,100,101,102}; //将arr2字节数组从2索引开始转换3个

String s3=new String(arr2,2,4);

System.out.println(s3);

4. public String(char[] value) 把字符数组转成字符串

char[] arr3={'a','b','c','d','e'}; //将字符数组转换成字符串

String s4=new String(arr3);

System.out.println(s4);

5. public String(char[] value,int index,int count) 把字符数组的一部分转成字符串

String s5=new String(arr3,1,3);

System.out.println(s5);

6. public String(String original) 把字符串常量值转成字符串

String s6=new String("KobeBryant");

System.out.println(s6);

(2) 常量池

用于存储在编译期确定,并被保存在一边以德字节码文件中的一些数据,包括final修饰变量即字符串变量和符号引用变量。

在堆中开空间的情况,等号右侧:

(1)有变量参与运算

(2)使用了new关键字

6.字符串相等的判断

(1)比较字符串地址

比较字符串地址是否相等使用”==”

(2)比较两个字符串的内容

比较两个字符串的内容是否相等使用:equals(Object obj)

String类重写了Object的equals方法

如果两字符串的类型相同,实际上是比较对应位置上的字符知否相等,如果所有的对象位置上的字符均相等返回true,否则返回false;如果类型不同直接返回false

7.多维数组

(1)二维数组的初始化方式

静态初始化:int[][] intA={{1,2,3},{2,3},{4,5,6}};

动态初始化:int[][] B=new int[3][];

B[0]=new int[] {1,2,3,4};

B[1]=new int[2];

B[2]=new int[3];

默认初始化:int[][] C=new int[3][4];

(2)二维数组的遍历方式

Int[][] a={{1,2,3},{4,5,6,},{7,8,9,10}}

普通for循环:for(int i=0;i<a.length;i++){

For(int j==0;j<a[i].length;j++){

}}

加强for循环:for(int[] arr:a){

For(int i:arr){

}}

普通和加强for循环:for(int[] arr:a){

For(int i=0;i<arr.length;i++){

}}

8.Object数组存储表格数据

(1)数组可以存储的类型数据

基本数据类型和引用数据类型

(2)对象数组存储数据的内存结构图

8fedeeabf2b901bee5d6c19cf4a92372.png
对象数组存储数据的内存结构图

9.数组的拷贝

(1)两种数组的拷贝类型

地址拷贝:int[] array={11,22,33};

Int[] arrayB=new int[5];

arrayB=array;

值拷贝:int[] array={11,22,33};

Int[] arrayB=new int[5];

arrayB[0]=array[0];

(2)System类中数组拷贝及参数含义

System.Arrays(Object src,int srcPos,Object dest,int destPos,int length)

Object src:源数组;int srcPos:数组起始位置;Object dest:目标数组;int destPos:目标数组起始位置;int length:要复制的数组的长度

10.java.util.Arrays工具类的使用

(1)Arrays工具类在API中的说明

该类包含用于操作数组的各种方法,还包含一个静态工厂,可以将数组视为列表。如果指定数组引用为空,则该类中的方法都会抛出一个NullPointerException,除非另有说明。

(2)Arrays类中的常用方法

int[] a= {1,7,2,4,3,5,8,6,9};

int[] b= {1,7,2,4,3,5,8,6,9};

ToString()打印数组:System.out.println(Arrays.toString(a));

System.out.println(Arrays.toString(b));

Equals()比较两个数组是否相同ystem.out.println(Arrays.equals(a, b));

System.out.println(a.equals( b));直接调用的是object中的equals方法,用于比较两个对象的内存地址(引用)是否相等

copyOf()复制指定数组

c=Arrays.copyOf(a, 5);目标数组长度不够,进行了重新创建c数组,更改了c的引用。会造成内存空间的浪费。

fill()填充:Arrays.fill(c,99);

sort()数组排序(排序的对象具备比较大小的能力):Arrays.sort(a);

对象数组排序需要编写比较的规则

11.冒泡排序的基础算法

(1)冒泡排序的原理

如果一个数列有N(5)个数,则至少需要N-1(4)轮循环才能保证数列有序

每一轮循环都从数列的第一个元素开始比较,依次比较相邻的两个元素,不叫道数列最后

如果前一个元素大于后一个元素,则使用第三变量交换

(2)冒泡排序的外循环条件和内循环条件

外循环控制比较的轮数

内循环控制相邻两数的比较

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值