null第04讲 字符串和数组第04讲 字符串和数组wangwei本讲教学目标本讲教学目标理解Java中的字符串
掌握字符串的常用
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
掌握Java的数组
掌握Java的异常处理机制知识回顾/本讲先行知识知识回顾/本讲先行知识类和对象的关系
封装继承多态
接口本讲内容本讲内容字符串
数组
异常处理字符串字符串生活中的字符串
使用String对象存储字符串
String类位于java.lang包中,具有丰富的方法
计算字符串的长度
连接字符串
比较字符串
提取字符串 频繁使用的字符串 “有志者事竟成 ” “今天西班牙输球了,冷门啊” String s = "有志者事竟成";String s = new String("有志者事竟成");字符串长度字符串长度import java.util.*;
public class TestString {
public static void main(String[ ] args) {
System.out.print("请随机输入你想到的名字: ");
Scanner input = new Scanner(System.in);
String name = input.next();
System.out.println("这个名字的长度是: \" " + name.length()+ "\" ");
}随机输入你心中想到的一个名字,然后输出它的字符串长度调用字符串的length()方法可以获得字符串的长度要想打印输出引号(”),必须在字符串中使用转义序列\”字符串比较4-1字符串比较4-1两个学生输入各自的爱好,判断是否一致 //判断是否相同
if(favrate1.equals(favrate2)){
System.out.println(“最喜欢相同");
}else{
System.out.println(“最喜欢不相同");
}比较两个字符串是否相等字符串比较4-2字符串比较4-2equals()方法比较原理
输入的“Java”和“java”代
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
同一爱好,如何解决?
使用equalsIgnoreCase()方法
结合toUpperCase()或toLowerCase()
字符串 1字符串 2检查组成字符串内容的字符是否完全一致字符串比较4-3字符串比较4-3使用equalsIgnoreCase()方法解决
比较时忽略大小写形式if(favrate1.equalsIgnoreCase(favrate2)){
System.out.println(“爱好相同");
}else{
System.out.println(“爱好不相同");
}字符串比较4-4字符串比较4-4结合toUpperCase()方法解决Java使用 toUpperCase( )
方法JAVAJava使用 toLowerCase( )
方法javaif(favrate1.toUpperCase().equals(favrate2.toUpperCase())){
System.out.println(“爱好相同");
}else{
System.out.println(“爱好不相同");
}字符串连接字符串连接方法1:使用“+”
方法2:使用String类的concat()方法你好,张三!String s = new String("你好,");
String name = new String("张三!");
String sentence = s.concat(name);
System.out.println(sentence);输出结果A.concat(B):
B字符串将被连接到A字符串后面字符串常用提取方法4-1字符串常用提取方法4-1 输入java源代码文件名,并输入自己的邮箱,对Java名和邮箱有效性进行检查。编码实现合法的文件名应该以.java结尾
合法的邮箱名中至少要包含“@”和“.”, 并检查“@”是否在“.”之前
字符串常用提取方法4-2字符串常用提取方法4-2常用提取方法举例返回出现第一个匹配的位置, 如果没有找到字符或字符串,则返回-10 1 2 3 位置字符串常用提取方法4-3字符串常用提取方法4-3beginindex: 字符串的位置从0开始算;endindex: 字符串的位置从1开始算 字符串常用提取方法4-4字符串常用提取方法4-4 //检查Java文件名
int index = fileName.lastIndexOf(".");
if(index!=-1 && index!=0 && fileName.substring(index+1,
fileName.length()).equals("java")){
fileCorrect = true;
}else{
System.out.println("文件名无效。");
}//检查你的邮箱格式
if (email.indexOf('@') !=- 1 && email.indexOf('.') >
email.indexOf('@')){
emailCorrect = true;
}else{
System.out.println("Email无效。");
}StringBufferStringBufferStringBuffer:String增强版
StringBuffer声明
StringBuffer的使用
StringBuffer sb = new StringBuffer();
StringBuffer sb = new StringBuffer("aaa");创建空字符串创建一个变量存储字符串aaasb.toString(); //转化为String类型sb.append("**"); //追加字符串StringBufferStringBuffer //声明课程信息字符串
StringBuffer course = new StringBuffer();
System.out.println("请输入课程信息: ");
Scanner sc = new Scanner(System.in);
//循环从键盘接收字符串
String input;
while(!(input = sc.next()).equals("#")){
course.append(input);
course.append("\n");
}
System.out.println("课程信息是:" + course);定义StringBuffer的实例,存储课程字符串循环追加字符,使用StringBuffer,效率高!从控制台接收课程信息,不断累加直到输入“#”键结束,并输出全部课程信息 String总结String总结String 是固定长度的字符串,如果要发生变化必须重新生成新的实例;
String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全)
null Java测试结束后,老师计算全班(30人)的平均分为什么需要数组int stu1 = 95;
int stu2 = 89;
int stu3 = 79;
int stu4 = 64;
int stu5 = 76;
int stu6 = 88;
……
avg = (stu1+stu2+stu3+stu4+stu5…+stu30)/30
30个变量太繁琐null生活案例:
为什么需要数组字画类好办法——分类放,易于找
1、格子提供了存储空间
2、每一类别都起一个名字
3、每件物品都有个标号古玩类数组在内存中的存储数组在内存中的存储80内存整型数组
int[ ] b = {100,98,…}; 整型变量
int a = 80; 数组定义数组定义数组是一个变量,连续存储相同数据类型的一种结构int类型元素 货架名 标识符 古玩 物品编号 元素下标 物品类型元素类型 数据 如何使用数组使用数组:
1、声明数组
2、分配空间
3、赋值
4、处理数据
如何使用数组int[ ] a; a = new int[5]; a [0] = 8; a [0] = a[0] * 10; a880a[0] 数组的声明 数组的声明int[ ] score1; //Java成绩
int score2[ ]; //C#成绩
String[ ] name; //学生姓名声明数组: 告诉计算机数据类型是什么1数据类型 数组名[ ] ; 数据类型[ ] 数组名 ; 数组初始化 数组初始化score = new int[30];
avgAge = new int[6];
name = new String[30];30……分配空间: 告诉计算机分配几个格子数组属于引用数据类型 2数据类型[ ] 数组名 = new 数据类型[大小] ; 声明数组并分配空间 数组赋值 数组赋值score[0] = 89;
score[1] = 79;
score[2] = 76;
……赋值:向分配的格子里放数据……30score[0]score[1]score[2] 89 79 76太麻烦!能不能一起赋值?3数组赋值数组赋值方法1: 边声明边赋值
方法2:动态地从键盘录入信息并赋值解决int[ ] score = {89, 79, 76};Scanner input = new Scanner(System.in);
for(int i = 0; i < 30; i ++){
score[i] = input.nextInt();
}int[ ] score = new int[ ]{89, 79, 76};数组应用数组应用求最值
求平均值
排序使用java.util.Arrays类
java.util包提供了许多存储数据的结构和有用的方法
Arrays类提供许多方法操纵数组,例如:排序,查询
Arrays类的sort()方法: 对数组进行升序排列二维数组二维数组异常掌握Java的异常处理机制
运用 try 、catch 、 finally 处理异常
运用 throw 抛出异常
运用 throws 声明异常
掌握log4j的用法,能够记录异常日志异常什么是异常什么是异常异常就是在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序异常!面对异常该怎么办呢?通常情况下,我们会这样处理:程序运行程序中断运行生活中,我们会根据不同的异常进行相应的处理,而不会就此中断我们的生活,那么程序中呢?Java中如何进行异常处理Java中如何进行异常处理Java的异常处理是通过5个关键字来实现的:try、catch、 finally、throw、throws 捕获异常 catchtryfinally执行可能产生
异常的代码 捕获异常
无论是否发生异常,
代码总能执行
手动抛出异常 抛出异常 throw声明异常 声明方法可能要
抛出的各种异常 throwstry/catch块try/catch块trycatch异常类型匹配 try/catch 块后的代码段进入catch块public void method(){
try {
// 代码段 1
// 产生异常的代码段 2
// 代码段 3
} catch (异常类型 ex) {
// 对异常进行处理的代码段4
}
// 代码段5
}产生异常对象 程序继续执行异常是一种特殊的对象,类型为java.lang.Exception或其子类 发生异常异常类型不匹配 程序中断运行try/catch/finally try/catch/finally 在try/catch块后加入finally块,可以确保无论是否发生异常,finally块中的代码总能被执行try 块 finally 块 catch 块 无异常 有异常 多重catch块 public void method(){
try {
// 代码段
// 产生异常(异常类型2)
} catch (异常类型1 ex) {
// 对异常进行处理的代码段
} catch (异常类型2 ex) {
// 对异常进行处理的代码段
} catch (异常类型3 ex) {
// 对异常进行处理的代码段
}
// 代码段
}多重catch块 一段代码可能会引发多种类型的异常
当引发异常时,会按顺序来查看每个 catch 语句,并执行第一个与异常类型匹配的catch语句
执行其中的一条 catch 语句之后,其后的 catch 语句将被忽略 try 与异常类型1不匹配try/catch 块后的代码段发生异常产生异常对象catch与异常类型2匹配catchcatch程序继续执行进入catch块抛出异常抛出异常如果在当前环境无法解决一个异常,就要将其抛出,把异常交给调用者处理 public class Student {
private String id; // 学生编号,长度应为7
public void setId(String pId){
// 判断学生编号的长度是否为7
if (pId.length() == 7) {
id = pId;
} else {
throw new IllegalArgumentException("参数长度应为7!");
}
}
}public class TestStudent {
public static void main(String[] args) {
Student student = new Student();
try {
student.setId("088");
} catch (IllegalArgumentException ex) {
System.out.println(ex.getMessage());
}
}
}抛出异常捕获异常参数长度应为7!控制台输出声明异常声明异常public class Student {
private String id;// 学生编号,长度应为7
public void setId(String pId) throws IllegalArgumentException{
// 判断学生编号的长度是否为7
if (pId.length() == 7) {
id = pId;
} else {
throw new IllegalArgumentException("参数长度应为7!");
}
}
}public class TestStudent {
public static void main(String[] args) {
Student student = new Student();
try {
student.setId("088");
} catch (IllegalArgumentException ex) {
System.out.println(ex.getMessage());
}
}
}由调用者捕获异常 声明该方法可能会产生异常 使用log4j记录日志信息 使用log4j记录日志信息public class TestStudent {
public static void main(String[] args) {
Student student = new Student();
try {
student.setId("088");
} catch (IllegalArgumentException ex) {
System.out.println(ex.getMessage());
}
}
}控制台输出参数长度应为7! 如果要在控制台与文件中同时输出错误信息,该如何处理?使用log4j可以解决这个问题,log4j是一个流行的日志记录工具 这是使用log4j后,存储在文本文件中的日志信息 什么是日志什么是日志日志:用来记录一些重要的操作信息
有价值的日志数据能够帮助用户提前发现和避开灾难,并且找到事件发生的原因 如何使用log4j记录日志如何使用log4j记录日志第一步:在工程中加入log4j所使用的jar文件第二步:创建log4j.properties文件如何使用log4j记录日志如何使用log4j记录日志### 把日志信息输出到控制台 ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %m%n
### 把日志信息输出到文件:accp.log ###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=accp.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %l %m%n
### 设置优先级别、以及输出源 ###
log4j.rootLogger=debug, stdout, file日志信息将写到文件中 指定日志输出的文件名 指定输出格式:
显示日期和log信息 设置优先级别为debug、
日志被输出到多个输出源 日志信息将写到控制台 信息打印到System.out上 指定输出格式:
显示日期,日志发生位置和日志信息 输出源名称优先级从高到低分别是ERROR、WARN、INFO、DEBUG
在此处,如果优先级别设为info,那么使用debug方法打印的日志信息将不被输出 如何使用log4j记录日志如何使用log4j记录日志第三步:使用log4j记录日志信息import org.apache.log4j.Logger;
public class TestStudentLog4j {
public static void main(String[] args) {
Student student = new Student();
Logger logger = Logger.getLogger(TestStudentLog4j.class.getName());
try {
logger.debug(“设置学生的编号。");
teacher.setId("088");
} catch (IllegalArgumentException ex) {
logger.info(ex.getMessage());
}
}
}获取日志记录器,这个记录器将负责控制日志信息 使用Logger对象的debug、info方法输出日志信息 总结*总结字符串及常用方法
数组
异常处理机制
log4j
实验实验本讲结束本讲结束谢谢大家