01 语言基础+高级:1-3 常用API第一部分_day08【String类、static、Arrays类、Math类】
day08【String类、static、Arrays类、Math类】
String类
static关键字
Arrays类
Math类
教学目标
能够使用String类的构造方法创建字符串对象
能够明确String类的构造方法创建对象,和直接赋值创建字符串对象的区别
能够使用文档查询String类的判断方法
能够使用文档查询String类的获取方法
能够使用文档查询String类的转换方法
能够理解static关键字
能够写出静态代码块的格式
能够使用Arrays类操作数组
能够使用Math类进行数学运算
day08_01_字符串概述和特点
day08_02_字符串的构造方法和直接创建
day08_03_字符串的常量池
day08_04_字符串的比较相关方法
day08_05_字符串的获取相关方法
day08_06_字符串的截取方法
字符串的截取,常用来获取上传图片文件的拓展名。
/** * 获取输入文件流的拓展名 * @param * @return */ private static String getFileExtension(CommonsMultipartFile cFile) { String originalFilename = cFile.getOriginalFilename(); return originalFilename.substring(originalFilename.lastIndexOf(".")); }
day08_07_字符串的转换相关方法
day08_08_字符串的分割方法
/*
分割字符串的方法:
public String[] split(String regex):按照参数的规则,将字符串切分成为若干部分。
注意事项:
split方法的参数其实是一个“正则表达式”,今后学习。
今天要注意:如果按照英文句点“.”进行切分,必须写"\\."(两个反斜杠)
*/
public class Demo05StringSplit {
public static void main(String[] args) {
String str1 = "aaa,bbb,ccc";
String[] array1 = str1.split(",");
for (int i = 0; i < array1.length; i++) {
System.out.println(array1[i]);
}
System.out.println("===============");
String str2 = "aaa bbb ccc";
String[] array2 = str2.split(" ");
for (int i = 0; i < array2.length; i++) {
System.out.println(array2[i]);
}
System.out.println("===============");
String str3 = "XXX.YYY.ZZZ";
String[] array3 = str3.split("\\.");
System.out.println(array3.length); // 0
for (int i = 0; i < array3.length; i++) {
System.out.println(array3[i]);
}
}
}
day08_09_练习:按指定格式拼接字符串
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
/* 题目: 定义一个方法,把数组{1,2,3}按照指定格式拼接成一个字符串。格式参照如下:[word1#word2#word3]。 分析: 1. 首先准备一个int[]数组,内容是:1、2、3 2. 定义一个方法,用来将数组变成字符串 三要素 返回值类型:String 方法名称:fromArrayToString 参数列表:int[] 3. 格式:[word1#word2#word3] 用到:for循环、字符串拼接、每个数组元素之前都有一个word字样、分隔使用的是#、区分一下是不是最后一个 4. 调用方法,得到返回值,并打印结果字符串 */ public class Demo06StringPractise { public static void main(String[] args) { int[] array = {1, 2, 3, 4}; String result = fromArrayToString(array); System.out.println(result); } public static String fromArrayToString(int[] array) { String str = "["; for (int i = 0; i < array.length; i++) { if (i == array.length - 1) { str += "word" + array[i] + "]"; } else { str += "word" + array[i] + "#"; } } return str; } }
day08_10_练习:统计输入的字符串中各种字符的个数
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
/* 题目: 键盘输入一个字符串,并且统计其中各种字符出现的次数。 种类有:大写字母、小写字母、数字、其他 思路: 1. 既然用到键盘输入,肯定是Scanner 2. 键盘输入的是字符串,那么:String str = sc.next(); 3. 定义四个变量,分别代表四种字符各自的出现次数。 4. 需要对字符串一个字、一个字检查,String-->char[],方法就是toCharArray() 5. 遍历char[]字符数组,对当前字符的种类进行判断,并且用四个变量进行++动作。 6. 打印输出四个变量,分别代表四种字符出现次数。 */ public class Demo07StringCount { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入一个字符串:"); String input = sc.next(); // 获取键盘输入的一个字符串 int countUpper = 0; // 大写字母 int countLower = 0; // 小写字母 int countNumber = 0; // 数字 int countOther = 0; // 其他字符 char[] charArray = input.toCharArray(); for (int i = 0; i < charArray.length; i++) { char ch = charArray[i]; // 当前单个字符 if ('A' <= ch && ch <= 'Z') { countUpper++; } else if ('a' <= ch && ch <= 'z') { countLower++; } else if ('0' <= ch && ch <= '9') { countNumber++; } else { countOther++; } } System.out.println("大写字母有:" + countUpper); System.out.println("小写字母有:" + countLower); System.out.println("数字有:" + countNumber); System.out.println("其他字符有:" + countOther); } }
day08_11_静态static关键字概述
day08_12_静态static关键字修饰成员变量
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
public class Student { private int id; // 学号 private String name; // 姓名 private int age; // 年龄 static String room; // 所在教室 private static int idCounter = 0; // 学号计数器,每当new了一个新对象的时候,计数器++ public Student() { this.id = ++idCounter; } public Student(String name, int age) { this.name = name; this.age = age; this.id = ++idCounter; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
/* 如果一个成员变量使用了static关键字,那么这个变量不再属于对象自己,而是属于所在的类。多个对象共享同一份数据。 */ public class Demo01StaticField { public static void main(String[] args) { Student two = new Student("黄蓉", 16); two.room = "101教室"; System.out.println("姓名:" + two.getName() + ",年龄:" + two.getAge() + ",教室:" + two.room + ",学号:" + two.getId()); Student one = new Student("郭靖", 19); System.out.println("姓名:" + one.getName() + ",年龄:" + one.getAge() + ",教室:" + one.room + ",学号:" + one.getId()); } }
day08_13_静态static关键字修饰成员方法
day08_14_静态static的内存图
day08_15_静态代码块
day08_16_数组工具类Arrays
day08_17_Arrays练习:字符串倒序
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
/* 题目: 请使用Arrays相关的API,将一个随机字符串中的所有字符升序排列,并倒序打印。 */ public class Demo02ArraysPractise { public static void main(String[] args) { String str = "asv76agfqwdfvasdfvjh"; // 如何进行升序排列:sort // 必须是一个数组,才能用Arrays.sort方法 // String --> 数组,用toCharArray char[] chars = str.toCharArray(); Arrays.sort(chars); // 对字符数组进行升序排列 // 需要倒序遍历 for (int i = chars.length - 1; i >= 0; i--) { System.out.println(chars[i]); } } }
day08_18_数学工具类Math
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
/* java.util.Math类是数学相关的工具类,里面提供了大量的静态方法,完成与数学运算相关的操作。 public static double abs(double num):获取绝对值。有多种重载。 public static double ceil(double num):向上取整。 public static double floor(double num):向下取整。 public static long round(double num):四舍五入。 Math.PI代表近似的圆周率常量(double)。 */ public class Demo03Math { public static void main(String[] args) { // 获取绝对值 System.out.println(Math.abs(3.14)); // 3.14 System.out.println(Math.abs(0)); // 0 System.out.println(Math.abs(-2.5)); // 2.5 System.out.println("================"); // 向上取整 System.out.println(Math.ceil(3.9)); // 4.0 System.out.println(Math.ceil(3.1)); // 4.0 System.out.println(Math.ceil(3.0)); // 3.0 System.out.println("================"); // 向下取整,抹零 System.out.println(Math.floor(30.1)); // 30.0 System.out.println(Math.floor(30.9)); // 30.0 System.out.println(Math.floor(31.0)); // 31.0 System.out.println("================"); System.out.println(Math.round(20.4)); // 20 System.out.println(Math.round(10.5)); // 11 } }
day08_19_Math练习:小学数学真题
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
/* 题目: 计算在-10.8到5.9之间,绝对值大于6或者小于2.1的整数有多少个? 分析: 1. 既然已经确定了范围,for循环 2. 起点位置-10.8应该转换成为-10,两种办法: 2.1 可以使用Math.ceil方法,向上(向正方向)取整 2.2 强转成为int,自动舍弃所有小数位 3. 每一个数字都是整数,所以步进表达式应该是num++,这样每次都是+1的。 4. 如何拿到绝对值:Math.abs方法。 5. 一旦发现了一个数字,需要让计数器++进行统计。 备注:如果使用Math.ceil方法,-10.8可以变成-10.0。注意double也是可以进行++的。 */ public class Demo04MathPractise { public static void main(String[] args) { int count = 0; // 符合要求的数量 double min = -10.8; double max = 5.9; // 这样处理,变量i就是区间之内所有的整数 for (int i = (int) min; i < max; i++) { int abs = Math.abs(i); // 绝对值 if (abs > 6 || abs < 2.1) { System.out.println(i); count++; } } System.out.println("总共有:" + count); // 9 } }
=====================================================================
参考资料:
正则表达式 https://www.runoob.com/regexp/regexp-tutorial.html
end