当前位置: 首页 > news >正文

初识Java-7

String类

String类提供了很多构造方法,主要有:

//方法一
String s1="hello";
System.out.println(s1);
//方法二
String s2=new String("hello");
System.out.println(s2);
//方法三
char[] array=new char[]{'h','e','l','l','o'};String s3=new String(array);
System.out.println(s3);

s1存放的是堆区的地址,在这个区域存放的是字符串的地址以及其他信息

通过s1==s2是比较s1和s2的地址,s1.equals(s2)是比较s1和s2的内容

大小比较

s1.comoareTo(s2);

s1>s2返回正数,相等返回0,小于返回负数。先比较对应字符,对应字符相等比较长度

s1.compareToIgnoreCase(s2);

忽略大小写进行比较

字符串查找

String类提供的常用查找操作

通过下标进行访问

        String s1="hello";System.out.println(s1);char tmp=s1.charAt(0);System.out.println(tmp);//h

查找字符串出现的位置

        String s1="hello";int tmp1=s1.indexOf('h');//0int tmp2=s1.indexOf('l',2);//2int tmp3=s1.indexOf("lo");//3int tmp4=s1.indexOf("li",3);//-1

查不到返回负数

如果要从后往前查找就可以使用lastIndexOf()

转化

其他类型转换为字符串

valueOf是静态方法,所以用类名去调用

 String s2=String.valueOf(2.13);

字符串转换为其他类型

int i2=Integer.parseInt("1234");

大小写转换

所有的转换都是新生成一个字符串

        String s3="aBc";//大写转换System.out.println(s3.toUpperCase());//ABC//小写转换System.out.println(s3.toLowerCase());//abc

字符串转数组

       String s5=new String("hello");char[] ch=s5.toCharArray();

反过来也可以用数组来生成字符串

格式化

String date=String.format("%d-%d-%d",2025,10,29);

字符串替换

由于字符串是不可变对象,替换是生成一个字符串

        String s1="abababoc";String s2=s1.replace('a','d');//dbdbdbocString s3=s1.replaceFirst("ab","o");//oababocString s4=s1.replaceAll("ab","o");//oooocString s5=s1.replace("ab","o");//ooooc

字符串拆分

可以将完整的字符串按照指定分隔符划分为若干子字符串

        String s1="How are you";String[] array1=s1.split(" ");//How//are//youString[] array2=s1.split(" ",2);//How//are you

有些字符串拆分需要加上转义

        String s1="196.168.1.0";String[] array1=s1.split("\\.");

字符 | * + . 都需要转义字符,在前面加上"\\"

如果是按照 \ 拆分,就要写成"\\\\"

如果需要按照多个字符拆分的话,字符之间可以使用 | 作为连字符

        String s1="name=en&age=18";String[] array1=s1.split("=|&");

字符串的截取

索引从0开始,部分截取为左闭右开

去除字符串的空格

字符串的不可变性

String是一种不可变对象,字符串的内容是不可改变的。字符串不可被修改

1.

String类在设计时是不可改变的,String类在描述中已经说明了

2.

String类被final修饰表示不可被继承

value 被final修饰,表示value自身的值不能改变,不能引用其他字符数组,但是其引用空间中的内容可以修改

字符串修改

StringBuilder和StringBuffer

String和StringBuilder区别在于String的内容无法修改,而StringBuilder的内容可以修改频繁修改字符串的情况考虑StringBuilder

String StringBuffer和StringBuilder的区别

1.String的内容不可修改,StringBuffer和StringBuilder的内容可以修改

2.StringBuffer和StringBuilder的大部分内容是相似的

3.StringBuffer采用同步处理,属于线程安全操作;而StringBuilder采用未同步处理,属于线程不安全操作

异常

概念

在Java中,将程序执行过程中发生的不正常行为称为异常,不包括语法错误

分类(Throwable派生出的两个子类)

Exception又分为

1.编译时异常,异常后程序员可以通过代码进行处理,使程序进行执行

2.运行时异常,指的是JVM无法解决的严重问题,比如JVM内部错误,资源耗尽等等

异常处理

防御式编程

1.LBYL:在操作之前就做了充分的检查

boolean ret = false;
ret = 登陆游戏();
if (!ret) {处理登陆游戏错误;return;
}
ret = 开始匹配();
if (!ret) {处理匹配错误;return;
}

EAFP:出错再进行修改

try{//可能出现的异常
}catch(){//可能捕获的异常
}finally{
}

在Java中异常处理主要是throw,try,catch,finally,throws五个关键字

异常的抛出

public static void textExceptions(int a){if(a==0){throw new ArithmeticException("a==0");}}public static void main(String[] args){textExceptions(0);}

注意:

1.throw必须写在方法的内部,并且抛出的对象必须是Exception或者Exception的子类对象

2.如果抛出的是RunTimeException或者RunTimeException的子类,则可以不用处理,直接交给JVM处理

3.如果抛出的是编译时异常,用户必须处理,否则无法执行

4.异常一旦抛出,其后的代码就不会执行

异常的捕获

异常的处理方式主要有两种,异常声明throws以及try-catch捕获处理

异常声明throws

处在异常声明参数列表之后,当方法中出现编译时异常,用户不想处理该异常,就可以借助throws将异常抛给方法的调用者来使用。当前的方法不处理异常,提醒调用方法的人处理异常,调用的人不想处理也可以接着抛出

throws必须在方法的参数列表之后,声明的异常必须是Exception或者Exception的子类

出现多个异常可直接声明父类,或者用逗号隔开多个异常

try-catch捕获并处理
语法格式:
try{// 将可能出现异常的代码放在这里
}catch(要捕获的异常类型  e){/* 如果try中的代码抛出异常了,此处catch捕获时异常类型与try中抛出的异常类型一致时,或    者是try中抛出异常的基类时,就会被捕获到对异常就可以正常处理,处理完成后,跳出try-catch结构,继续执行后序代码*/
}[catch(异常类型 e){// 对异常进行处理
}finally{// 此处代码一定会被执行到
}]
// 后序代码
// 当异常被捕获到时,异常就被处理了,这里的后序代码一定会执行
// 如果捕获了,由于捕获时类型不对,那就没有捕获到,这里的代码就不会被执行//注意://1. []中表示可选项,可以添加,也可以不用添加// 2. try中的代码可能会抛出异常,也可能不会

打印错误信息

e.printStackTrace();

注意:

try内抛出异常位置之后的代码将不能执行,异常是按照类型来捕获的,若可能抛出多个异常就需要写多个catch子类在前父类在后

finally

有些特定的代码,不论程序是否发生异常,都需要执行,比如对资源的回收。但是异常会引发程序的跳转,造成有些语句执行不到,finally就是用来解决这个问题的

注意:即使前面的代码return 返回了也会执行finally代码,并且如果finally也有return的话,那么会返回finally中返回的值,也就是说返回值被finally中返回的值修改了

异常处理流程

关于调用栈:

方法之间是存在相互调用的关系的,这种调用关系我们可以用“调用栈”来描述。在JVM中有一块内存空间称为“虚拟机栈”专门存贮方法之间的调用关系。当代码中出现异常的时候,我们可以使用e.printStackTrace();的方式参看异常代码的调用栈

处理流程:

自定义异常类

public class UserNameException extends Exception{public UserNameException() {}public UserNameException(String message) {super(message);}
}

自定义异常通常会继承Exception(受查异常)或者RuntimeException(非受查异常)

http://www.dtcms.com/a/549456.html

相关文章:

  • 潍坊比较大的网站制作公司网站建设和网页制作
  • Postman vs Swagger vs PostIn,接口管理工具一文纵评
  • 如何使用React和Redux构建现代化Web应用程序
  • 湖北省住房和城乡建设厅网站首页wordpress自动刷新2次
  • 网站建设的设计方案和实施计划网站做优化效果怎么样
  • AWS + WordPress:中小型外贸独立站的理想组合
  • 掌控未来无线通信新时代——全面解读无线发射和接收模块的创新应用
  • 湖北洈水水利水电建设公司网站小米手机商城
  • 部署开源漏洞扫描工具SiriusScan及问题解决
  • 互联网企业外化能力与实体零售融合:基于定制开发开源AI智能名片S2B2C商城小程序的实践探索
  • 淮安建设机械网站制作网站指向错误
  • 青岛seo网站管理手机端店铺装修
  • Linux InfiniBand FMR池深度解析:高性能内存注册的设计与实现
  • Linux 运行时电源管理(PM Runtime)API 使用说民
  • 激光驱鸟装置:技术原理、应用场景与综合优势全解析
  • 【Rust编程:从小白入坑】Rust结构体(Struct)详解
  • 【开题答辩实录分享】以《足球社区微信小程序》为例进行答辩实录分享
  • 哪个网站能帮助做试卷个人免费注册公司
  • 万国手表网站亚马逊企业网站建设
  • java对图片进行表单,生成本地图片或者流式输出
  • Python 虚拟环境:告别依赖冲突的实用指南
  • LP8773S第二代准谐振PWM控制器12V芯片内部框架图及应用信息介绍
  • Ruby Mysql:深度解析Ruby与MySQL的交互
  • 清空回收站后的文件还能恢复吗?分析原理,讲清方法
  • 怎样做外部网站推广郑州网站建设知识分享
  • 赋能采购革新:星合智联如何为企业开启TI芯片直采数字化新体验?
  • 构建可持续私域运营体系:从黑五营销到长期用户沉淀指南
  • 科技部网站php做网站不兼容ie8
  • 玉田网站制作wordpress百度mlp
  • Vite 大型项目优化方案