Java高级学习回顾

创建一个字符串对象

String字符串

String是一个类,属于引用类型。在Java程序中一切使用""引起来的内容,都是这个类的实例,称为字符串对象。

注意:字符串定义后是一个常量,值不可更改。字符串实际是一个字符数组

String srt="hello java";//这里是创建一个字符串,将地址保存到srt中
srt="123";//这里并不是srt的值改变了,而是srt又指向了新创建的"123"字符串地址,将其保存。

在创建字符串对象时可以直接使用""赋值创建,也可以通过构造方法来创建。

String str="hello你好";//使用""赋值创建
String str1=new String("ab");//通过构造方法来创建

注意:在使用字符串时,如果要比较其值是否相同,不要使用等号判断,因为等号判断的是内存地址。所以在比较字符串是否相同时,要使用String重写的equals方法进行判断。String中equals方法判断的原理,大致为:将两个字符串保存到字符数组中,再对每个字符逐一比较,如果全部一致则返回。在使用equals方法时,通常要将已知的非空字符串作为调用者。

重点:记住字符串常用的方法(下表为字符串重点记住的几个常用方法)。

方法名返回值作用
length()int获取字符串的长度
trim()String去除字符串首尾的所有空格
getBytes()byte[]按默认编码格式将字符串转换为字节数组
toCharArray()char[]将字符串转换为字符数组
equals(String str)boolean判断字符串是否相同
charAt(int index)char获取index位置上的字符串
indexOf(String str)int获取str第一次出现的位置,如果没有返回-1
contains(字符序列)boolean判断指定的字符序列(字符串)是否存在于原字符串中
concat(String str)String将str拼接到原字符串末尾
substring(int index)String截取原字符串在[index,数组长度)区间内的字符。(从指定位置截取至末尾,包含指定位置)
substring(int from,int to)String截取原字符串在[from,to)区间内的字符。(从from截取至to,包含from不包含to)
split(String reg)String[]按指定字符串或正则表达式切分原字符串。如果指定内容不在末尾,n个指定字符能得到n+1个子串;如果指定内容在末尾,n个指定字符能得到n个子串(不包含末尾的无效字符)。
String.valueOf(参数)String将一个参数转换为字符串,参数可以是原始类型,也可以是任意对象。

可变字符串

因为String字符串是不可变的,在需要改变较多时,非常不方便。在此价绍StringBuilder类和StringBuffer类。

StringBuilder类:用于表示可变字符串的一个类,是非线程安全的,建议在单线程环境下使用,效率略高于StringBuffer。

StringBuffer类:用于表示可变字符串的一个类,是线程安全的,建议在多线程环境下使用,效率略低于StringBuilder。

可变字符串与不可变字符串之间的转换

有些方法如indexOf()、charAt()等,在String和StringBuilder中都存在,可以不用转换。但有些方法如getBytes()、contains()等,只能通过String调用,这时就需要进行转换。

不可变字符串转换为可变字符串:通过创建一个可变字符串对象,将不可变字符串作为参数实现转换

可变字符串转换为不可变字符串:通过调用可变字符串的toString()方法实现转换

包装类

Java是纯面向对象语言,宗旨是将一切事物视为对象处理。但原始类型不属于对象,不满足面向对象的思想,但原始类型使用时无需创建对象,保存在栈中,效率更改。为了让原始类型也有对象的类类型,达到"万物皆对象"的思想,所以就有了包装类的概念。包装类就是原始类型对应的类类型。包装类通常用于将字符串转换为对应的原始类型。在web应用中,从浏览器中获取到后台的数据,全是String类型,一定要使用转换的方法。

特点

  • 八个原始类型中,除了int和char之外,其余类型的包装类,都是将首字母改为大写。int为Integer,char为Character
  • 除了Character类之外,其余类都有至少两个构造方法:参数为原始类型或字符串的构造方法。Character的构造方法只有一个,参数为char变量。
  • 除了Character类之外,其余类都有静态方法parse原始类型(String str),用于将字符串转换为相应的原始类型
    • 数值型的包装类的parseXXX()方法,如果不是一个真正的对应类型的数,转换时会抛出NumberFormatException异常。如"123abc"、"123.456"都不能使用Integer.parseInt()转换
    • Boolean类型中的parseBoolean()方法,参数如果是"true"这个单词,无论大小写,都能转换为真正的boolean值的true,只要不是"true"这个单词,转换结果都为false
  • 除了Boolean类之外,其余类都有MAX_VALUEMIN_VALUE这两个静态属性,用于获取对应原始类型支持的最大最小范围
  • 所有包装类中都有一个**compareTo(参数1,参数2)**方法,用于比较两个参数
    • 如果是数值型,参数1>参数2返回1,参数1<参数2返回-1,相同返回0
    • 如果是Boolean型,两个参数相同返回0,不同时,如果参数1为true返回1,否则返回-1
    • 如果是Character型,返回参数1-参数2的值。
  • 所有包装类中都有toString()方法,用于将包装类对象转换为String字符串对象

装箱和拆箱

  • 所有包装类都有一个静态方法valueOf(原始类型),将某个原始类型的数据转换为相应的包装类对象,这个过程称为装箱

  • 所有包装类都有一个原始类型Value()方法,用于将包装类对象转换为原始类型,这个过程称为拆箱

  • 自动装箱拆箱。在jdk1.5之后,加入了自动装箱拆箱的特性,可以直接在原始类型和对应的包装类中互相赋值

  • 自动装箱池

    • 如果通过调用构造方法创建的包装类对象,属于不同地址,使用==比较的结果为false

    • 自动装箱的形式,赋值范围在-128~127之间,将这个范围内的数保存到了"自动装箱池"中,所以两个包装类对象保存的数在这个范围内时,使用同一个地址

    • 自动装箱的形式,赋值范围超出-128~127之间,自动创建新的包装类对象,所以是不同的地址

    • 这个题目说明,引用类型之间比较,一定不要使用==,要使用重写的equals方法。

Date类

构造方法

常用构造方法说明
Date()创建当前瞬间的日期对象
Date(long l)创建指定毫秒数对应的日期对象。(从1970.1.1起经过了的毫秒数)
Date(int year,int month,int date)该构造方法已过时。创建指定年月日的日期对象。(年从1900年起经过的年数,月用0-11表示1-12月)

常用方法

常用方法
getTime()得到对应Date对象指定的毫秒数。
setTime(long l)设置毫秒数
after(Date when)判断调用日期对象是否在when之后
before(Date when)判断调用日期对象是否在when之前

异常

异常的产生:异常在程序中以对象的形式存在。当代码执行时出现异常,虚拟机会自动创建一个相应的异常对象,如果没有对该异常进行处理,就会导致程序中断。

异常的分类:异常在程序中以对象的形式存在,所以异常有对应的类。

自定义异常:可以自定义异常,在满足某种条件下,手动通过throw关键字抛出异常,人为中断程序。

自定义异常步骤:

  • 定义一个类,继承某个异常类。

    ​ 如果继承的是RuntimeException,表示自定义的异常类属于运行时异常,该异常对象可以不用处理。

    ​ 如果继承的是非RuntimeException,表示自定义的异常类属于非运行时异常,该异常对象必须要处理。

  • [可选操作]定义一个无参数的构造方法,调用父类中无参的构造方法,定义一个带字符串参数的构造方法,调用父类带字符串参数的构造方法。

数组与集合

数组的特点

  • 数组中保存的元素都是有序的,可以通过下标快速访问

  • 数组中保存的数据都是同一种类型

  • 数组的长度在定义后,无法改变

  • 数组无法获取其中保存的实际元素数量

集合的特点

  • 能保存一组数据,可以有序也可以无序
  • 集合的容量可变
  • 集合中可以保存不同类型的数据
  • 可以获取集合中实际的元素数量

ArrayList实现类(重点)

  • 采用数组实现的集合
  • 可以通过索引访问元素、可以改变集合大小。如果要在其中插入或删除元素时,会影响其余元素。该集合查询效率高、增删中间元素效率低。
  • 该集合对象中保存的元素,都是引用类型(对象的内存地址)。即使保存了123,其实不是保存的int类型的123,而是Integer类型的123.

构造方法

常用构造方法说明
ArrayList()创建一个无参的ArrayList对象。实际是创建了一个空的Object数组。在调用添加元素方法时,才会初始化该数组大小为10。
ArrayList(int capacity)创建一个指定容量的ArrayList对象,实际是创建一个指定大小的Object数组,如果参数为负,会抛出IllegalArgumentException异常

LinkedList实现类

  • 采用双向链表实现的集合

  • 集合中保存的每个元素也称为节点,除首尾节点外,每个节点即保存了自己的数据,也保存了其前一个和后一个节点的地址

  • 如果在其中进行插入和删除的操作时,不影响其他元素的位置,只需要重新定义新节点的前后节点位置即可。

  • 如果要查询某个节点的索引,需要从头结点或尾结点开始一步步得到目标节点位置

  • 所以中间进行插入和删除的效率高,随机读取的效率低

ArrayList和LinkedList的区别

  • 两者都是List接口的实现类,保存的元素有序可重复,允许保存null,拥有一些公共的方法,如size(),isEmpty(),subList(int from,int to)等
  • ArrayList采用数组实现,对于随机读取效率更高,通常用于查询;LinkedList采用双向链表实现,插入删除不影响其他元素位置,通常用于中间插入删除。

File文件

Java中可以将本地硬盘中的文件(文件和目录)以对象的形式表示。就能通过Java代码对本地文件进行读取或操作。

构造方法

常用构造方法说明
File(String pathName)根据文件的完整路径创建对象
File(String parent,String name)根据文件所在的父目录路径和自身文件名创建对象
File(File parent,String name)根据文件所在父目录文件对象和自身文件夹创建对象

在Java中,流用于表示计算机硬盘与内存之间传输数据的通道

内存中的数据存入到硬盘中,称为写write,也称为输出

硬盘中的数据存入到内存中,称为读read,也称为输入

流的分类

按方向分类

输入流:InputStream、Reader

作用:将硬盘中的数据读取到内存中

输出流:OutputStream、Wrtiter

作用:将内存中的数据写入到硬盘中

按类型分

字节流:InputStream、OutputStream

作用:适用于非文本类型,如图片、文件等的读写

字符流:Reader、Writer

作用:适用于文本类型,尤值txt格式文件的读写

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值