专栏首页达达前端第二十九节:Java基础知识-类,多态,Object,数组和字符串

第二十九节:Java基础知识-类,多态,Object,数组和字符串

标题图

前言

Java基础知识-类,多态,Object,数组和字符串,回顾,继承,类的多态性,多态,向上转型和向下转型,Object,数组,多维数组,字符串,字符串比较。

回顾

类 .png

类的定义格式:

[类的修饰符] class 类的名称 [extends 父类名称][implements 接口名称列表] {  
       变量的定义以及变量的初始化;
       方法的定义以及方法体;
}

类的修饰符:publicabstractfinal等。

  • private
  • protected
  • public
  • default(缺省)

继承

继承是java中的特性,继承可以实现代码的复用性,继承的类为子类,被继承的类为父类,java中不支持多重继承,但可以通过接口实现。

class DemoClass extends SuperClass{
 …
}

类的多态性

多态的体现:覆盖与重载

多态

多态是为了提高功能的扩展性,提高复用,为父类的引用指向了子类的对象,多态,多种形态的体现。

父类引用指向子类对象,并调用子类的覆盖方法,就是多态,注意父类的引用不能随便强加转为子类类型,因为强转可能会出错,在转换前先使用instanceof判断父类是否可以转换为子类

abstract class Animal{
 public abstract void eat();
}

多态原理:

Dog d = new  Dog();
Animal a = new Dog();
Cat c = new Catt();
Animal aa = new Cat();

向上转型和向下转型

Cat c = new Catt(); Animal aa = new Cat();

Animal a = new Animal(); Cat c = (Cat) a;

向上转型为了提高程序的扩展性,向下转型之前要进行类型的判断,否则容易发生classCastException异常,判断类型的关键字为instanceof

if(a instanceof Cat){
 Cat c = (Cat)a;
 c.catchMouse();
}else if(a instanceof Dog){
 Dog d = (Dog)a;
 d.lookHome();
}

Object

Object是类层次结构的根类,存在java.lang.Object中。

方法

说明

clone()

创建并返回此对象的一个副本

equals()

指某个对象是否与此对象“相等”

finalize()

当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法

getClass()

返回对象运行时类

hashCode

返回该对象的哈希码值

notify()

唤醒在此对象等待的单个线程

notifyAll()

唤醒所有线程

toString()

返回该对象的字符串表示

wait()

线程等待,直到其他线程调用此对象的notify() 或 notifyAll()

构造方法:public Object()

  1. finalize()方法:java的垃圾回收时机
  2. Object的toString()方法:返回的是对象的字符串形式
  3. Object的equals()方法:比较两个对象是否相等

数组

Java数组.png

数组是同种类型的数据集合,数组中放的每个数据为数组中的一个元素,元素的数量为数组的长度,为数组名.length

数组的定义:

数组的数据类型[] 变量名; 数组的数据类型 变量名[];

java数组实际上是对象,通过new创建对象,数组的下标不低于0,也比数组的元素个数小,在使用数组下标时,可能会产生ArrayIndexOutOfBoundsException错误,要小心了。

多维数组

int[][] a = new int[2][3];

图片

数组与字符串.png

数组的使用步骤:

  1. 声明数组
  2. 创建数组
  3. 使用数组元素

字符串

字符串常量 声明字符串变量 创建字符串 获取字符串长度

字符串比较

==:比较两个字符串是否为同一个对象 equals():比较两个字符串的内容是否相同

检索:indexOf()
截取:substring()
替换:replace()
忽略大小写比较:equalsIgnoreCase()
字符串前缀、后缀是否为指定字符串:startWith()、endWith()
字符串转换:parseInt()、parseByte()、parseShort()、parseLong()、parseDouble()
数值转换为字符串:valueOf()
对象的字符串:toString()

结语

  • 本文主要讲解 Java基础知识-类,多态,Object,数组和字符串
  • 下面我将继续对JavaAndroid中的其他知识 深入讲解 ,有兴趣可以继续关注
  • 小礼物走一走 or 点赞

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Redis面试高频45题笔记:基础+缓存雪崩+哨兵+集群+Reids学习笔记

    欢迎关注专栏:Java架构技术进阶。里面有大量batj面试题集锦,还有各种技术分享,如有好文章也欢迎投稿哦。

    慕容千语
  • SpringBoot 统一时区的方案

    思路为: 将数据库和服务器的时间都采用标准时区UTC存储处理。前端拿到标准时区的数据,统一根据用户所在时区进行转换。这样保证了后端数据时区的一致性,前端根据实...

    飞奔去旅行
  • Django之HttpRequest和HttpResponse

    Django 是围绕着 Request 与 Response 进行处理,也就是无外乎“求”与“应”。

    菲宇
  • 024:用Java实现shell命令cat 1.log | grep a | sort | uniq -c | sort -rn的功能

    artificial-intelligence-codes-coding-247791.jpg

    阿杜
  • 阿里架构师Peter老师讲述Java程序员→架构师所需要掌握的技能

    很多朋友都会疑惑,同样是程序员吗,同样是学的java,同样掌握了相应的技术,为什么自己就不能拿到BAT企业的Offer,不能拿到50W+的年薪?自己和年薪50W...

    慕容千语
  • 结合案例深入解析策略模式

    其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。

    李红
  • Java程序员进阶架构师的五个阶段,你到了哪各阶段?

    之前有个讨论:实现同样功能,简洁代码一定比复杂代码效率高吗?有的说,还得看算法,如果算法相同,简洁代码效率应该会高一些。有的说,即使算法相同,简洁代码也不见得比...

    慕容千语
  • Spring MVC的工作原理

      在关于利用maven搭建ssm的博客,我们一起来探讨下问的最多的问题中,我遗留了一个问题:Spring mvc是何时、何地、如何将Model中的属性绑定到哪...

  • Spring IOC

    spring 就是一个大工厂,可以将所有对象创建和依赖关系维护,交给 spring 管理。

    希希里之海
  • 从JVM角度看看Java的clone操作

    欢迎关注专栏:Java架构技术进阶。里面有大量batj面试题集锦,还有各种技术分享,如有好文章也欢迎投稿哦。 最近在给熔断器组件增加一个降级策略(Hystri...

    慕容千语

扫码关注云+社区

领取腾讯云代金券