异常和String类

异常和String类,第1张

异常和String类 什么是异常?

程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。

异常的作用?

程序发生异常事件之后,为我们输出详细的信息,

程序员通过这个信息,可以对程序进行一些处理

异常和错误区别

异常的使用

分为两种

一种是负责任的表现try catch finally

另一种是throw抛出给上级

自定义异常

基础类

基础类就是八大基本数据类型

在基础库部分,Sun公司提供了极其丰富的功能类,为了便于区分,根据类的功能大致把这些类放在了不同的包内,例如.lang包、.util包、.io包、.sql包、.text包等等。

对于初学者来说,最为常用的工具类有封装类、String、StringBuffer、Random、Date、Calendar、SimpleDateFormat及Math静态类等等

包装类 基本数据类型对应包装类booleanBooleanbyteByteshortShortintIntegerlongLongcharCharacterfloatFloatdoubleDouble

包装类把基本数据类型的数据封装为引用类型的对象,而且提供了很多有用的方法

对于基本数据类型,Sun公司均提供了对应的包装类

所有的包装类均位于.lang包下,而这个包会由JVM编译器在编译时自动导入我们的程序,可以不用手工导入该包下的类而直接使用

包装类的方法

包装类主要是两种方法

一种是本类型和其它类型之间进行转换,另一种是字符串和本类型以及基本类型之间的转换

拆箱

一种是自动拆箱,自动拆箱就是将包装类对象直接赋值给其对应的基本数据类型,另一种是手动拆箱,手动拆箱就是使用包装类中的方法

拿Integer类举例,如果想要把Integer类型的对象转换为int类型的数据,那么就可以使用intValue方法

装箱

装箱分为自动装箱和手动装箱,自动装箱就是直接将基本数据类型赋值给包装类的对象引用,手动装箱就是使用包装类的构造方法,让基本数据类型作为构造方法的参数

Integer整数类,Character字符类,等等包装类

这些包装类都提供了很多种种方法,详细可以看jdk教程

Java String类

String 类代表字符串。Java 程序中的所有字符串字面值(如 “abc” )都作为此类的实例实现。

String类位于java.lang包下,是Java语言的核心类,提供了字符串的比较、查找、截取、大小写转换等 *** 作;Java语言为“+”连接符(字符串连接符)以及对象转换为字符串提供了特殊的支持,字符串对象可以使用“+”连接其他对象。

字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享。

String 中常用的方法 构造器描述String()构造一个空字符串对象String(byte[] bytes)通过byte数组构造字符串对象String(char[] chars)通过字符数组构造字符串对象String(String original)构造一个original的副本,即拷贝一个originalString(StringBuffer buffer)通过StringBuffer数组构造字符串对象charAt(int index)取字符串中的某一个字符,其中的参数index指的是字符串中序数,字符串的序数从0开始到length()-1compareTo(String a)当前String对象与A比较。相等关系返回0,不相等时,从两个字符串第0个字符开始比较,返回第一个不相等字符差,另一种情况,较长字符串的前面部分恰巧是较短的字符串,返回它们的长度差。concat(String str)将该String对象与str连接在一起copyValueOf(char[] date,int offset,int count)两个方法将char数组转换成String与其中一个构造函数类似endsWith(String suffix)该String对象是否以suffix结尾getBytes()将Sting对象转换成byte数组.getChars(int a,int b,char[] dst,int c)将字符串拷贝到字符串数组中。其中a为拷贝的起始位置、b为拷贝的结束位置、字符串数值dst为目标字符数组、c为目标字符数组的拷贝起始位置。indexOf(int ch)找第一个匹配字符位置length()当前字符串的长度replace(char oldchar, char newchar)将字符串中第一个oldchar替换成newchar。subString(int beginindex)取从beginindex位置开始到结束的子字符串toCharArray()该String对象转换成char数组toLowerCase()将字符串转换成小写toUpperCase()将字符串转换成大写

字符串大量用于我们的程序中,所以程序专门提供了字符串类,内有大量实用的方法

创建字符串对象两种方式的区别 直接赋值方式创建对象

直接赋值方式创建对象是在方法区的常量池

String str="hello";//直接赋值的方式
通过构造方法创建字符串对象

通过构造方法创建字符串对象是在堆内存

String str=new String("hello");//实例化的方式
String 为什么不可变

String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了

String 类源码中有一个char数组,并且这个 char 数组是被final修饰的。因为数组一旦创建长度不可变。并且被final修饰的引用一旦指向某个对象之后,不可在指向其它对象,所以String是不可变的!

源码开头如下:

public final class String
    implements java.io.Serializable, Comparable, CharSequence {
    
    private final char value[];

引用:面试题:String为什么不可变?StringBuffer/StringBuilder为什么是可变的?

三种有关字符串的类

java.lang.String:一般作为简单字符串类型

java.lang.StringBuffer:字符串缓冲区

java.lang.StringBuider:字符串缓存区

StringBuffer 字符串缓冲类

在实际应用中,经常会遇到对字符串进行动态修改。这时候,String类的功能受到限制,而StringBuffer类可以完成字符串的动态添加、插入和替换等 *** 作
对StringBuffer的修改,是直接的,不会创建多余的对象

1、这三个类的区别有两个方法,运行速度和线程安全。

首先说运行速度也就是执行速度,在这方面的快慢为 StringBuilder > StringBuffer >String.

String 最慢的原因是:String 为字符串的常量而 StringBuilder 和 StringBuffer 是字符串的变量,String 一旦创建之后是不可更改的,而 StringBuilder 和 StringBuffer 是变量是可以更改的。

Java中对String对象进行的 *** 作实际上是一个不断创建新的对象并且将旧的对象回收的一个过程,所以执行速度很慢。

而StringBuilder和StringBuffer的对象是变量,对变量进行 *** 作就是直接对该对象进行更改,而不进行创建和回收的 *** 作,所以速度要比String快很多。

参考:Java常用类(二)String类详解

相关推荐阅读:

  • Java—String,StringBuffer,StringBuilde区别和 *** 作
Random随机类 构造器描述Random()创建一个新的随机数发生器Random(long seed)用一个种子(长整型)创建一个随机数发生器

此类用来产生随机数,位于.util包中,所以需要手工导包

Date时间类

日期类中封装了有关日期和时间的信息,类 Date 表示特定的瞬间,精确到毫秒。用户可以通过调用相应的方法来获取系统时间或设置日期和时间

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5685658.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存