JavaSE - 三个特殊类(1)

一、java.lang.String 类

1.String类的两种实例化方式

(1)直接赋值 - 在堆上分配空间,自动入池

eg:String str = "Hello";

(2)通过构造方法实例化String 类对象,手动入池

eg:String str = new String("Hello");

对象入池 - 手动入池方法

public native String intern()    // 对象方法

在JVM底层会自动维护一个字符串的对象池,如果采用直接赋值的形式进行String 对象实例化,该对象会自动保存在这个对象池中。如果下次继续使用直接赋值的形式声明String对象,此时对象池中若有指定内容,则直接引用;如果没有,则开辟新的堆空间将其保存在对象池中供下次使用。


public class Work{
    public static void main(String[] args){
        String str1 = "hello";
        String str2 = "hello";
        String str3 = "hello";
        System.out.println(str1 == str2);
        System.out.println(str2 == str3);
        System.out.println(str1 == str3);
    }
}

输出结果为:
true
true
true

2.字符串相等比较

public boolean equals(String anotherString)    // 成员方法
eg:str1.equals(str2);    // 比较str1 和str2 的内容是否相等

String 类是引用数据类型,所以str 里存的是开辟的空间的地址,==比较的是地址

字符串常量是String类的匿名对象,不可变更 - 字符串一旦定义后不可改变。

当String类变量和字符串常量比较时,一定要将字符串常量写在前面,避免出现NullPointerException异常。

例如:推荐使用“Hello”.equals(str); 

因为如果str = null 时,str.equals("Hello"); 会出现异常,导致程序崩溃。

3.字符与字符串之间的相互转化

(1)字符数组 -> String(通过构造方法)

public String(char[] value)    // 将整个字符数组转换为字符串
public String(char[] value, int offset, int count)    // 从指定位置offset处开始的count个字符转换为字符串

(2)将字符串转换为单个字符

public char charAt(int index)    // 取指定位置index处的字符

(3)将字符串转换为字符数组

public char[] toCharArray()    // 通过String对象调用
//判断一个字符串中是否由数字组成
public static boolean isNumber(String str){
    char[] data = str.toCharArray();
    for(int i=0; i<data.length; i++){
        System.out.println(data[i]);
        if(data[i]<'0' || data[i]>'9'){
            return false;
        }
    }
    return true;
}

4.字节(byte)与字符串

(1)byte[ ] -> String(通过构造方法)

public String(byte[] value)    // 将整个字节数组转换为字符串
public String(byte[] value, int offset, int count)    // 从指定位置offset处开始的count个字节转换为字符串

(2)String -> byte[ ]

public byte[] getBytes()    // 通过String对象调用

(3)将字符串按照指定编码转为字节数据

public byte[] getBytes(String charsetName)    // charsetName为指定编码格式

5.字符串比较

(1)不区分大小写相等比较

public boolean equalsIgnoreCase(String anotherString)    // 通过String对象调用

(2)比较两个字符串大小

public int compareTo(String anotherString)    // 通过String对象调用
/**
(1)返回值 > 0 :表示当前对象大于比较对象(anotherString)
(2)返回值 = 0 :表示当前对象等于比较对象
(3)返回值 < 0 :表示当前对象小于比较对象
*/

6.字符串查找

(1)判断一个字符是否存在

public boolean contains(String str)

(2)判断是否以指定字符开始

public boolean startsWith(String str)

(3)判断是否以指定字符结束

public boolean endsWith(String str)

(4)从指定位置开始判断是否以指定字符开始

public boolean startsWith(String str, int index)

7.字符串替换

(1)替换全部指定内容

public String replaceAll(String regex, String replacement)    // 用replacement替换regex

(2)替换首个内容

public String replaceFrist(String regex, String replacement)

8.字符串拆分

(1)将字符串按照指定格式全部拆分(转译)

public String[] split(String regex)

(2)将字符串部分拆分,数组长度为limit

public String[] split(String regex, int limit)

9.字符串截取

(1)从指定位置截取到结尾

public String substring(int beginIndex)

(2)从指定位置截取到指定位置 - [ ) 左闭右开

public String substring(int beginIndex, int endIndex)

10.String 类的其他方法

(1)去掉字符串中的左右空格,中间的保留

public String trim()

(2)字符串大小写转换 - 全部转换

public String toUpperCase()    // 转大写
public String toLowerCase()    // 转小写
//让一个字符串首字母大写
public static String firstCase(String str){
    return str.substring(0,1).toUpperCase() + str.substring(1);
}

(3)取得字符串长度

public int length()

(4)判断字符串是否为空 - 只能判断字符串是否为空,而不是null

public boolean isEmpty()

// 完整判断字符串为空的方法:if(str == null || str.isEmpty())

11.两个SB类 - 方便进行字符串的修改

在java.lang 包里(基础包,自动导入)

StringBuffer 类StringBuilder 类

(1)字符串修改

public StringBuffer append(各种数据类型)

(2)与String 的相互转化

// String -> StringBuffer:调用StringBuffer的构造方法或者append()方法
StringBuffer.toString()    // StringBuffer -> String
public StringBuffer reverse()    // 字符串反转

(3)删除指定范围的数据

public StringBuffer delete(int start, int end)

(4)插入数据

public StringBuffer insret(int offset, 各种数据类型)    //offset为要插入的开始位置

(5)String 和两只SB的区别

  • String 的内容不可修改,而两只SB可以修改内容(append)
  • StringBuffer 采用同步处理,线程安全,效率较低;StringBuilder 采用异步处理,线程不安全,效率较高。

String 的 “+” 操作底层转换为StringBuilder 的 append 操作。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
城市应急指挥系统是智慧城市建设的重要组成部分,旨在提高城市对突发事件的预防和处置能力。系统背景源于自然灾害和事故灾难频发,如汶川地震和日本大地震等,这些事件造成了巨大的人员伤亡和财产损失。随着城市化进程的加快,应急信息化建设面临信息资源分散、管理标准不统一等问题,需要通过统筹管理和技术创新来解决。 系统的设计思路是通过先进的技术手段,如物联网、射频识别、卫星定位等,构建一个具有强大信息感知和通信能力的网络和平台。这将促进不同部门和层次之间的信息共享、交流和整合,提高城市资源的利用效率,满足城市对各种信息的获取和使用需求。在“十二五”期间,应急信息化工作将依托这些技术,实现动态监控、风险管理、预警以及统一指挥调度。 应急指挥系统的建设目标是实现快速有效的应对各种突发事件,保障人民生命财产安全,减少社会危害和经济损失。系统将包括预测预警、模拟演练、辅助决策、态势分析等功能,以及应急值守、预案管理、GIS应用等基本应用。此外,还包括支撑平台的建设,如接警心、视频会议、统一通信等基础设施。 系统的实施将涉及到应急网络建设、应急指挥、视频监控、卫星通信等多个方面。通过高度集成的系统,建立统一的信息接收和处理平台,实现多渠道接入和融合指挥调度。此外,还包括应急指挥心基础平台建设、固定和移动应急指挥通信系统建设,以及应急队伍建设,确保能够迅速响应并有效处置各突发事件。 项目的意义在于,它不仅是提升灾害监测预报水平和预警能力的重要科技支撑,也是实现预防和减轻重大灾害和事故损失的关键。通过实施城市应急指挥系统,可以加强社会管理和公共服务,构建和谐社会,为打造平安城市提供坚实的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值