java高级(javaAdv)

本文探讨了Java编程中的高级主题,包括异常处理和数组集合。首先,介绍了异常产生的背景,当代码执行遇到异常时,虚拟机会创建异常对象,如果未处理则可能导致程序中断。接着,讨论了异常的分类,强调异常以对象形式存在,对应于特定的类。处理异常,特别是Exception的子类,是为了保证程序的连续运行。文章提到了try-catch-finally语句块作为处理异常的标准方式。最后,简要提及了数组和集合的特点,作为Java数据存储的重要部分。
摘要由CSDN通过智能技术生成

一、String字符串

String 是一个类,属于引用类型。
Java 程序中一切使用 "" 引起来的内容,都是这个类的实例,称为字符串对象。
字符串定义后是一个常量 ,值不可更改。字符串 实际是一个字符数组
二、 String 类使用时注意
由此可见,如果要频繁更改 String 类型变量的值,不要使用 String 对象操作字符串,效率很低又浪费内存空间。
三、 通过构造方法创建字符串
常用构造方法
String() :创建一个空白字符串对象,实际创建一个空字符数组。
String(String str):创建一个指定的字符串对象,实际是创建一个形参字符串的副本。
String(char[] list):创建一个指定字符数组的字符串对象。
String(byte[] list):按默认编码格式创建一个指定字节数组的字符串对象。
String(byte[] list,String charsetName):按指定的编码格式创建一个指定字节数组的字符串对
象。
四、不同方式创建字符串
1使用 "" 赋值的形式创建
2、使用构造方法 String(String str) 创建
3、使用 + 拼接 "" new 出来的字符串对象
五、字符串总结
在使用字符串时,如果要比较其值是否相同,不要使用 == 判断,因为 == 判断的是内存地址。
所以 在比较字符串是否相同时,要使用 String 重写的 equals 方法进行判断。
String equals 方法判断的原理,大致为:将两个字符串保存到字符数组中,再对每个字符逐一比较, 如果全部一致则返回。
在使用 equals 方法时,通常要将已知的非空字符串作为调用者。
六、字符串常用方法
七、 可变字符串
String 字符串对象是一个常量,在定义后其值不可改变。
如果使用 String 类的对象,对其频繁更新时,就会不停地创建新的对象,重新引用。
所以如果要执行 1000 次重新赋值的过程,就要创建 1000 个字符串对象,花费很多时间和内存空间,所以效率很低。这时就需要使用可变字符串类。
1、StringBuilder
用于表示可变字符串的一个类,是 非线程安全 的,建议在单线程环境下使用,效率略高于
StringBuffer
2、StringBuffer
用于表示可变字符串的一个类,是 线程安全 的,建议在多线程环境下使用,效率略低于 StringBuilder
StringBuilder StringBuffer 中的方法作用都一致,只不过 StringBuffer 中的方法使用了 synchronized 关键字修饰,表示一个同步方法,在多线程环境下不会出现问题。
3、比较 String StringBuilder StringBuffer 这三个类的区
相同点
这三个类都可以用于表示或操作一个字符串
这三个类中有公共的方法,如 indexOf() charAt() 等、
这三个类都是被 final 修饰的类,不能被继承
不同点
String 定义的字符串是一个常量,不可变; StringBuilder StringBuffer 定义的字符串是一个变
量,可以改变。
String 类中的方法调用后,会创建字符串副本,不会影响原字符串;可变字符串对象调用的方法,
直接操作原字符串,会影响。
StringBuilder 是非线程安全的, StringBuffer 是线程安全的,其中的方法使用 synchronized 修饰为
同步方法。在多线程情景下,需要使用 StringBuffer StringBuilder 效率略高于 StringBuffer
总结
在程序中,如果要频繁操作某个字符串,一定使用可变字符串类 StringBuilder StringBuffer 创建对
象。
八、 包装类
Java 是纯面向对象语言,宗旨是将一切事物视为对象处理。
但原始类型不属于对象,不满足面向对象的思想,但原始类型使用时无需创建对象,保存在栈中,效率更改。
为了让原始类型也有对象的类类型,达到 " 万物皆对象 " 的思想,所以就有了包装类的概念。
包装类就是原始类型对应的类类型。 包装类通常用于将字符串转换为对应的原始类型。
web 应用中,从浏览器中获取到后台的数据,全是 String 类型,一定要使用转换的方法。
包装类      原始类型    将字符串转换为原始类型
Byte           byte         Byte.parseByte(String str)
Short         short        Short.parseShort(String str)
Integer     int             Integer.parseInt(String str)
Long         long          Long.parseLong(String str)
Float         float          Float.parseFloat(String str)
Double      double     Double.parseDouble(String str)
Boolean boolean      Boolean.parseBoolean(String str)
Character  char         无
特点
八个原始类型中,除了 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_VALUE MIN_VALUE 这两个静态属性,用于获取对应原
始类型支持的最大最小范围
所有包装类中都有一个 compareTo( 参数 1, 参数 2) 方法 , 用于比较两个参数
如果是数值型,参数 1> 参数 2 返回 1 ,参数 1< 参数 2 返回 -1 ,相同返回 0
如果是 Boolean 型,两个参数相同返回 0 ,不同时,如果参数 1 true 返回 1 ,否则返回 -1
如果是 Character 型,返回参数 1- 参数 2 的值。
所有包装类中都有 toString() 方法,用于将包装类对象转换为 String 字符串对象
十、装箱和拆箱
所有包装类都有一个静态方法 valueOf( 原始类型 ) ,将某个原始类型的数据转换为相应的包装类对
象,这个过程称为 装箱
// 手动装箱
int i = 123 ; // 定义一个原始类型的数据
Integer aInteger = Integer . valueOf ( i );
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值