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)对象数组存储数据的内存结构图

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

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)冒泡排序的外循环条件和内循环条件

外循环控制比较的轮数

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

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

  1. string转成对象_详解Java I/O流(五),对象序列化

    对象序列化 什么是序列化和反序列化呢? 序列化就是将对象转成字节序列的过程,反序列化就是将字节序列重组成对象的过程. 在这里插入图片描述 为什么要有对象序列化机制 程序中的对象,其实是存在有内存中,当 ...

  2. java将字符串转成对象_java – 将字符串转换为类对象

    I am storing a class object into a string using toString() method. Now, I want to convert the string ...

  3. java是面向对象还是面向过程_Java教程分享Java面向对象与面向过程

    Java教程分享Java面向对象与面向过程,面向对象: 是一种看待问题, 解决问题的思维方式, 着眼点在于找到一个能够帮助解决问题的实体, 然后委托这个实体来解决问题 面向过程: 是一种看待问题, 解 ...

  4. string转成对象_非常简单的string驻留池,你对它真的了解吗

    昨天看群里在讨论C#中的string驻留池,炒的火热,几轮下来理论一堆堆,但是在证据提供上都比较尴尬.虽然这东西很基础,但比较好的回答也不是那么容易,这篇我就以我能力范围之内跟大家分享一下 一:无处不 ...

  5. request对象_java学习之web基础(2):Request

    request ServletRequest --(继承)--> HttpServletRequest --(实现)--> org.apache.catalina.connector.Re ...

  6. java如果把字符串转成对象_Java中的重复对象:不仅仅是字符串

    当Java应用程序消耗大量内存时,它本身就会出现问题,并可能导致GC压力增加和GC暂停时间过长.在我之前的一篇文章中,我讨论了Java中常见的内存浪费源:重复字符串.两个 java.lang.Stri ...

  7. java毫秒值转换成日期_Java学习笔记day08

    Object类 java.lang.Object 类Object是类层次结构的根类 每个类都使用Object作为 超(父)类 所有对象(包括数组)都实现这个类的方法 Object类的toString方 ...

  8. 允许使用抽象类类型 isearchboxinfo 的对象_Java学习5-设计模式+抽象类/方法

    1.设计模式 设计模式:一套被反复使用.多数人知晓的,经过分类编目的.代码设计经验的总结,是软件开发人员在软件开发过程中面临的一般问题的解决方案. 项目中合理的运用设计模式可以完美的解决很多问题: 每 ...

  9. java 由接口构造对象_Java学习笔记04——类和对象|抽象和接口|构造方法与继承...

    六.Java类 1.  Java中用关键字class来创建类. 2.  类中属性和方法称为类的成员;类的声明和方法要在同一个文件内,不同于C++. 3.  类的定义: [] class [extend ...

最新文章

  1. 我是如何有效的避免测试漏测?
  2. 【转】自然语言系列学习之表示学习与知识获取(三)知识图谱
  3. ThinkJs笔记琐碎
  4. VSCode 用户自定义片段 snippet 基本语法说明
  5. 图解算法学习笔记(七):狄克斯特拉算法
  6. IT公司老板落水,各部门员工怎么救??
  7. 信息学奥赛C++语言:统计数字字符个数
  8. Android Device Chooser中显示Target unknown解决方法
  9. 使用Jest对原生TypeScript项目进行UI测试
  10. Matlab输出换行
  11. mac配置OpenGL超级宝典(第7版)环境
  12. 完美收官 | IOTE第十八届国际物联网展精彩落幕,美格智能参展回顾
  13. 怎么用计算机求平均值,电脑教程:计算机平均值怎么求
  14. 条码打印机换碳带的方法
  15. 电子实验室仪器使用大全
  16. 高中数学几何题解题技巧:立体几何三视图高效还原方法—拔高法
  17. 在华为工作的优点和缺点
  18. 背景设置为透明RGB
  19. MySQL - 各版本的区别
  20. 4G摄像头如何在定时抓拍下实现超低功耗-技术贴

热门文章

  1. oracle 进制,Oracle进制转换函数
  2. 皮一皮:太像了....
  3. 皮一皮:这样的消息我也想收...
  4. 每日一皮:这就是成都马拉松???...
  5. 你了解 Java 的 jstat 命令吗?
  6. Spring Security 和 Apache Shiro
  7. 最新最全国内外架构开源技术干货资料
  8. linux修改arena大小,教大家Resolume Arena怎么设置大屏幕的方法
  9. SpringMVC注解@RequestParam(value=xxxx,required=false)解释
  10. mxnet pick挑选