软帝学习第二星期的总结

通过这两个星期的学习,我感觉我的编程能力得到了很大的提升,从一个什么都不会的菜鸡,变成了初步了解Java基础的新手,我觉得这两个星期过得很充实,虽然压力有,但是更多的是享受。

方法的重载(overload)是多态的一种实现策略,方法的重载表现为在一个类中包含多个同名的方法,但是每个方法必须保证方法中的参数列表(类型,个数,顺序)任意一项不一致,方法重载与返回值无关。

方法重写(Override)和重载(Overload)区别:

  1. 方法重写发生在存在继承关系的子类中,由子类重写父类的方法;方法的重载一般发生在同一个类中

  2. 方法重写必须保证方法的返回值类型与父类一致;方法的重载与返回值无关

  3. 方法重写时必须保证方法中的参数列表与父类一致;方法重载必须保证每个方法的参数列表不一致

  4. 共同点:不论方法重写还是重载,都必须保证方法名一致

在一个java类中如果存在多个构造器,每个构造器中都有重复代码时,可以将重复的初始代码归纳到一个游离块中,统一执行,从而解决构造器中代码重复的问题,游离块一般在构造器执行之前先执行,在构造对象时隐式调用,本质上就是一个方法的执行体。

在java中每一个基本数据类型都有一个与之对应的引用类型,基本类型数据一般用于算数运算,布尔逻辑,关系等运算,但是无法进行对象操作(方法调用,属性调用);但是,通过封装类型可以实现基本类型的对象操作,比如进行字符串与基本类型数据之间的转换,进制转换。

String在java中表示定长字符串,一旦对String初始化,则无法修改内容,除非重新赋值(创建新对象),所以String在进行大量字符串拼接时会频繁创建新对象,从而影响程序的运行效率;

StringBuffer是一个长度可变的字符序列,可以动态在原来字符串缓冲区的基础上追加(append)或者插入(insert)新的字符序列,而不会修改对象的内存地址,所以使用StringBuffer在完成字符串拼接时效率较高,另外StringBuffer是线程安全的实现,所以在线程并发操作时效率会有所影响

StringBuilder跟StringBuilder具备相同的API(构造器,方法等),但是StringBuilder是不执行同步(线程不安全),因此效率会高于StringBuffer.

static可以用于修饰内部类,属性,方法,游离块;被static修饰的元素与实例无关(与对象无关),与类直接相关,一旦类被加载则static修饰的元素都会被初始化,static修饰的元素有最高存活优先级,即便普通引用对象被GC回收时,static修饰相关资源不会立即回收;被static修饰的属性,方法,内部类称之为静态属性,静态方法,静态内部类,这些元素都无需创建对象调用,可以直接通过类名(加".")进行调用,一般static用于常量定义,一些工具类中的方法,需要反复执行,但是不需要反复创建。

  • 实例变量,实例方法(需要通过对象进行调用,属于对象的)

  • 类变量,类方法(直接与类相关的静态元素)

  • 关于static元素的注意事项

  • 不允许在静态方法中使用非静态元素(静态方法被调用时可能对象还未创建,非静态元素都需要通过对象调用)

  • 静态元素只会在类加载时初始化一次

final可以用于修饰类,方法,属性,被final修饰的元素:

  1. final修饰的类不可被继承(断子绝孙类)

  2. final修饰的变量不可被改变(常用于与static组合进行常量的声明)

  3. final修饰的方法是不允许被重写

在java中,方法和属性都是可以以多态的形式存在的,方法的多态主要体现方法的重写与重载;属性的多态一般表现形式为父类引用指向子类对象(向上转型);一个引用类型变量既可以指向该引用类型自身,也可以指向该类型子对象,该操作称之为多态,或者动态绑定。

多态的优势:

  1. 降低了类之间的耦合

  2. 面向抽象编程

  3. 提高程序的可扩展性

多态中关于对象转型问题:

可以使用父类引用指向子类对象(上转型);反过来子类引用可以指向父类对象(下转型),但是被下转型的父类对象原本就应该是子类的对象,否则会出现:java.lang.ClassCastException异常(造型失败)

interface,是一种比抽象类更纯粹的结构,接口中只能存在抽象方法和常量(接口是一组抽象方法和常量的集合),接口并不是类,所以没有构造器;一般可以由具体类对接口进行实现,并且具体类必须实现接口中的所有方法

接口语法:

<modifier> interface <name>[extends <superinterface>] {

​ <attribute_declarations>

java中可以在一个类的内部定义属于该类的从属类,从属类具备访问外部类的成员的能力,内部类提供了比方法更完整封装性,内部类主要包含以下几种:

  1. 成员内部类

  2. 局部内部类

  3. 静态内部类

  4. 匿名内部类

关于内部类注意事项

  1. 内部类可以使用外部类的成员变量和方法

  2. 局部内部类如果需要使用外部方法(或者语句块)的局部变量,该局部变量必须使用final修饰(延长局部变量的生命周期)

  3. 局部内部类的使用范围仅限于声明区域

  4. 静态内部类中不能直接使用外部类的实例方法实例变量,创建外部类对象,才能通过对象调用

在java中程序的运行往往会因为设计或者编写过程中引起一些错误的操作,这些错误信息主要包含两种类型

  1. 错误(Error):通常是JVM内部错误,或者资源耗尽等一些无法从本质上解决的问题(严重问题)

  2. 异常(Exception):因为一些编程错误或者外在因素引起的可以被修复的问题

Error和Exception都是从Throwable类继承过来

java程序在运行时或者编译时如果出现异常,则会产生异常对象,对于该异常对象的处理方法,通常包含两种解决方法:

  1. 异常抛出(throws)

  2. 异常捕获(try...catch...fianlly)

java中的异常处理通常包含以下关键字:

  • throw :一定会抛出该异常,通常出现在方法内部用于显式抛出

  • throws :抛出有可能出现的异常,出现在方法声明区域(在参数列表后面)

  • try :try语句块一般用于将有可能出现异常的语句包裹

  • catch:处理try语句块中可能出现的异常,一旦异常产生则进入对应的catch块(可以catch多种异常)

  • finally:finally语句块中内容无论是否出现异常,都会执行,一般用执行资源清理与回收

关于异常处理

  1. 对于异常抛出,被抛出的异常必须由后续的调用者处理(继续抛出,捕获)

  2. 存在继承关系的子类中不能抛出超出父类抛出的异常范围

  3. 如果父类方法没有抛出任何异常,则子类重写父类方法时只能对产生异常捕获

如何快速定位异常出现的位置:

  • 观察异常的类型名称

  • 观察异常的关键字(异常名之后)

  • 第一次出现异常的代码行数

正则表达式类似于操作系统的一些通配符,通过特定的符号组合的表达式对一段文本进行检索,替换,分析等操作,正则表达式最早起源于Perl语言,目前成为业内的一种通用的表达式语言,Java中通常基于以下几个类使用正则表达式:

  • String

  • Pattern(正则表达式编译器)

  • Matcher(匹配器)

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值