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_字符串的截取方法

字符串的截取,常用来获取上传图片文件的拓展名。

  1. /**
  2. * 获取输入文件流的拓展名
  3. * @param
  4. * @return
  5. */
  6. private static String getFileExtension(CommonsMultipartFile cFile) {
  7. String originalFilename = cFile.getOriginalFilename();
  8. return originalFilename.substring(originalFilename.lastIndexOf("."));
  9. }

day08_07_字符串的转换相关方法

day08_08_字符串的分割方法

  1. /*
  2. 分割字符串的方法:
  3. public String[] split(String regex):按照参数的规则,将字符串切分成为若干部分。
  4.  
  5. 注意事项:
  6. split方法的参数其实是一个“正则表达式”,今后学习。
  7. 今天要注意:如果按照英文句点“.”进行切分,必须写"\\."(两个反斜杠)
  8. */
  9. public class Demo05StringSplit {
  10.  
  11. public static void main(String[] args) {
  12. String str1 = "aaa,bbb,ccc";
  13. String[] array1 = str1.split(",");
  14. for (int i = ; i < array1.length; i++) {
  15. System.out.println(array1[i]);
  16. }
  17. System.out.println("===============");
  18.  
  19. String str2 = "aaa bbb ccc";
  20. String[] array2 = str2.split(" ");
  21. for (int i = ; i < array2.length; i++) {
  22. System.out.println(array2[i]);
  23. }
  24. System.out.println("===============");
  25.  
  26. String str3 = "XXX.YYY.ZZZ";
  27. String[] array3 = str3.split("\\.");
  28. System.out.println(array3.length); //
  29. for (int i = ; i < array3.length; i++) {
  30. System.out.println(array3[i]);
  31. }
  32. }
  33.  
  34. }

day08_09_练习:按指定格式拼接字符串

  1. /*
  2. 题目:
  3. 定义一个方法,把数组{1,2,3}按照指定格式拼接成一个字符串。格式参照如下:[word1#word2#word3]。
  4.  
  5. 分析:
  6. 1. 首先准备一个int[]数组,内容是:1、2、3
  7. 2. 定义一个方法,用来将数组变成字符串
  8. 三要素
  9. 返回值类型:String
  10. 方法名称:fromArrayToString
  11. 参数列表:int[]
  12. 3. 格式:[word1#word2#word3]
  13. 用到:for循环、字符串拼接、每个数组元素之前都有一个word字样、分隔使用的是#、区分一下是不是最后一个
  14. 4. 调用方法,得到返回值,并打印结果字符串
  15. */
  16. public class Demo06StringPractise {
  17.  
  18. public static void main(String[] args) {
  19. int[] array = {1, 2, 3, 4};
  20.  
  21. String result = fromArrayToString(array);
  22. System.out.println(result);
  23. }
  24.  
  25. public static String fromArrayToString(int[] array) {
  26. String str = "[";
  27. for (int i = 0; i < array.length; i++) {
  28. if (i == array.length - 1) {
  29. str += "word" + array[i] + "]";
  30. } else {
  31. str += "word" + array[i] + "#";
  32. }
  33. }
  34. return str;
  35. }
  36.  
  37. }

public class Demo06StringPractise

day08_10_练习:统计输入的字符串中各种字符的个数

  1. /*
  2. 题目:
  3. 键盘输入一个字符串,并且统计其中各种字符出现的次数。
  4. 种类有:大写字母、小写字母、数字、其他
  5.  
  6. 思路:
  7. 1. 既然用到键盘输入,肯定是Scanner
  8. 2. 键盘输入的是字符串,那么:String str = sc.next();
  9. 3. 定义四个变量,分别代表四种字符各自的出现次数。
  10. 4. 需要对字符串一个字、一个字检查,String-->char[],方法就是toCharArray()
  11. 5. 遍历char[]字符数组,对当前字符的种类进行判断,并且用四个变量进行++动作。
  12. 6. 打印输出四个变量,分别代表四种字符出现次数。
  13. */
  14. public class Demo07StringCount {
  15.  
  16. public static void main(String[] args) {
  17. Scanner sc = new Scanner(System.in);
  18. System.out.println("请输入一个字符串:");
  19. String input = sc.next(); // 获取键盘输入的一个字符串
  20.  
  21. int countUpper = 0; // 大写字母
  22. int countLower = 0; // 小写字母
  23. int countNumber = 0; // 数字
  24. int countOther = 0; // 其他字符
  25.  
  26. char[] charArray = input.toCharArray();
  27. for (int i = 0; i < charArray.length; i++) {
  28. char ch = charArray[i]; // 当前单个字符
  29. if ('A' <= ch && ch <= 'Z') {
  30. countUpper++;
  31. } else if ('a' <= ch && ch <= 'z') {
  32. countLower++;
  33. } else if ('0' <= ch && ch <= '9') {
  34. countNumber++;
  35. } else {
  36. countOther++;
  37. }
  38. }
  39.  
  40. System.out.println("大写字母有:" + countUpper);
  41. System.out.println("小写字母有:" + countLower);
  42. System.out.println("数字有:" + countNumber);
  43. System.out.println("其他字符有:" + countOther);
  44. }
  45.  
  46. }

public class Demo07StringCount


day08_11_静态static关键字概述

day08_12_静态static关键字修饰成员变量

  1. public class Student {
  2.  
  3. private int id; // 学号
  4. private String name; // 姓名
  5. private int age; // 年龄
  6. static String room; // 所在教室
  7. private static int idCounter = 0; // 学号计数器,每当new了一个新对象的时候,计数器++
  8.  
  9. public Student() {
  10. this.id = ++idCounter;
  11. }
  12.  
  13. public Student(String name, int age) {
  14. this.name = name;
  15. this.age = age;
  16. this.id = ++idCounter;
  17. }
  18.  
  19. public int getId() {
  20. return id;
  21. }
  22.  
  23. public void setId(int id) {
  24. this.id = id;
  25. }
  26.  
  27. public String getName() {
  28. return name;
  29. }
  30.  
  31. public void setName(String name) {
  32. this.name = name;
  33. }
  34.  
  35. public int getAge() {
  36. return age;
  37. }
  38.  
  39. public void setAge(int age) {
  40. this.age = age;
  41. }
  42. }

public class Student

  1. /*
  2. 如果一个成员变量使用了static关键字,那么这个变量不再属于对象自己,而是属于所在的类。多个对象共享同一份数据。
  3. */
  4. public class Demo01StaticField {
  5.  
  6. public static void main(String[] args) {
  7.  
  8. Student two = new Student("黄蓉", 16);
  9. two.room = "101教室";
  10. System.out.println("姓名:" + two.getName()
  11. + ",年龄:" + two.getAge() + ",教室:" + two.room
  12. + ",学号:" + two.getId());
  13.  
  14. Student one = new Student("郭靖", 19);
  15. System.out.println("姓名:" + one.getName()
  16. + ",年龄:" + one.getAge() + ",教室:" + one.room
  17. + ",学号:" + one.getId());
  18. }
  19.  
  20. }

public class Demo01StaticField

day08_13_静态static关键字修饰成员方法

day08_14_静态static的内存图

day08_15_静态代码块


day08_16_数组工具类Arrays

简述Comparable和Comparator两个接口的区别

day08_17_Arrays练习:字符串倒序

  1. /*
  2. 题目:
  3. 请使用Arrays相关的API,将一个随机字符串中的所有字符升序排列,并倒序打印。
  4. */
  5. public class Demo02ArraysPractise {
  6.  
  7. public static void main(String[] args) {
  8. String str = "asv76agfqwdfvasdfvjh";
  9.  
  10. // 如何进行升序排列:sort
  11. // 必须是一个数组,才能用Arrays.sort方法
  12. // String --> 数组,用toCharArray
  13. char[] chars = str.toCharArray();
  14. Arrays.sort(chars); // 对字符数组进行升序排列
  15.  
  16. // 需要倒序遍历
  17. for (int i = chars.length - 1; i >= 0; i--) {
  18. System.out.println(chars[i]);
  19. }
  20. }
  21.  
  22. }

public class Demo02ArraysPractise


day08_18_数学工具类Math

  1. /*
  2. java.util.Math类是数学相关的工具类,里面提供了大量的静态方法,完成与数学运算相关的操作。
  3.  
  4. public static double abs(double num):获取绝对值。有多种重载。
  5. public static double ceil(double num):向上取整。
  6. public static double floor(double num):向下取整。
  7. public static long round(double num):四舍五入。
  8.  
  9. Math.PI代表近似的圆周率常量(double)。
  10. */
  11. public class Demo03Math {
  12.  
  13. public static void main(String[] args) {
  14. // 获取绝对值
  15. System.out.println(Math.abs(3.14)); // 3.14
  16. System.out.println(Math.abs(0)); //
  17. System.out.println(Math.abs(-2.5)); // 2.5
  18. System.out.println("================");
  19.  
  20. // 向上取整
  21. System.out.println(Math.ceil(3.9)); // 4.0
  22. System.out.println(Math.ceil(3.1)); // 4.0
  23. System.out.println(Math.ceil(3.0)); // 3.0
  24. System.out.println("================");
  25.  
  26. // 向下取整,抹零
  27. System.out.println(Math.floor(30.1)); // 30.0
  28. System.out.println(Math.floor(30.9)); // 30.0
  29. System.out.println(Math.floor(31.0)); // 31.0
  30. System.out.println("================");
  31.  
  32. System.out.println(Math.round(20.4)); //
  33. System.out.println(Math.round(10.5)); //
  34. }
  35.  
  36. }

Demo03Math

day08_19_Math练习:小学数学真题

  1. /*
  2. 题目:
  3. 计算在-10.8到5.9之间,绝对值大于6或者小于2.1的整数有多少个?
  4.  
  5. 分析:
  6. 1. 既然已经确定了范围,for循环
  7. 2. 起点位置-10.8应该转换成为-10,两种办法:
  8. 2.1 可以使用Math.ceil方法,向上(向正方向)取整
  9. 2.2 强转成为int,自动舍弃所有小数位
  10. 3. 每一个数字都是整数,所以步进表达式应该是num++,这样每次都是+1的。
  11. 4. 如何拿到绝对值:Math.abs方法。
  12. 5. 一旦发现了一个数字,需要让计数器++进行统计。
  13.  
  14. 备注:如果使用Math.ceil方法,-10.8可以变成-10.0。注意double也是可以进行++的。
  15. */
  16. public class Demo04MathPractise {
  17.  
  18. public static void main(String[] args) {
  19. int count = 0; // 符合要求的数量
  20.  
  21. double min = -10.8;
  22. double max = 5.9;
  23. // 这样处理,变量i就是区间之内所有的整数
  24. for (int i = (int) min; i < max; i++) {
  25. int abs = Math.abs(i); // 绝对值
  26. if (abs > 6 || abs < 2.1) {
  27. System.out.println(i);
  28. count++;
  29. }
  30. }
  31.  
  32. System.out.println("总共有:" + count); //
  33. }
  34.  
  35. }

Demo04MathPractise

=====================================================================

参考资料:

正则表达式  https://www.runoob.com/regexp/regexp-tutorial.html

end

01 语言基础+高级:1-3 常用API第一部分_day08【String类、static、Arrays类、Math类】的更多相关文章

  1. 01 语言基础+高级:1-3 常用API第一部分_day07【Scanner类、Random类、ArrayList类】

    day07[Scanner类.Random类.ArrayList类] Scanner类Random类ArrayList类 教学目标 能够明确API的使用步骤能够使用Scanner类获得键盘录入数据能够 ...

  2. 01 语言基础+高级:1-5 常用API第二部分_day01.【Object类、常用API: Date类、System类、StringBuilder类】

    day01[Object类.常用API] 主要内容 Object类 Date类 DateFormat类 Calendar类 System类 StringBuilder类 包装类 java.lang.O ...

  3. 01 语言基础+高级:1-6 集合_day03【List、Set、Collections工具类】

    day03 [List.Set.数据结构.Collections] 主要内容 数据结构 List集合 Set集合 Collections 第一章 数据结构 2.1 数据结构有什么用 我们将常见的数据结 ...

  4. 01 语言基础+高级:1-10 JDK8新特性_day12【函数式接口】

    day12[函数式接口] 主要内容自定义函数式接口函数式编程常用函数式接口 教学目标能够使用@FunctionalInterface注解能够自定义无参无返回函数式接口能够自定义有参有返回函数式接口能够 ...

  5. 01 语言基础+高级:1-7 异常与多线程_day07 【线程池、Lambda表达式】

    day07[线程池.Lambda表达式] 主要内容 等待与唤醒案例 线程池 Lambda表达式 教学目标 -[ ] 能够理解线程通信概念-[ ] 能够理解等待唤醒机制-[ ] 能够描述Java中线程池 ...

  6. 01 语言基础+高级:1-7 异常与多线程_day06 【线程、同步】

    day06 [线程.同步] 主要内容 线程 同步 线程状态 一.学习目标 1. 能够描述Java中多线程运行原理 2. 能够使用继承类的方式创建多线程 3. 能够使用实现接口的方式创建多线程 4. 能 ...

  7. 01 语言基础+高级:1-7 异常与多线程_day05 【异常、线程】

    day05 [异常.线程] 主要内容 异常.线程 教学目标 能够辨别程序中异常和错误的区别 说出异常的分类 说出虚拟机处理异常的方式 列举出常见的三个运行期异常 能够使用try...catch关键字处 ...

  8. 01 语言基础+高级:1-8 File类与IO流_day10【缓冲流、转换流、序列化流】

    day10[缓冲流.转换流.序列化流] 主要内容 缓冲流 转换流 序列化流 打印流 教学目标 能够使用字节缓冲流读取数据到程序 能够使用字节缓冲流写出数据到文件 能够明确字符缓冲流的作用和基本用法 能 ...

  9. 01 语言基础+高级:1-6 集合_day02【Collection、泛型】

    day02[Collection.泛型] 主要内容 Collection集合 迭代器 增强for 泛型 教学目标 能够说出集合与数组的区别 说出Collection集合的常用功能 能够使用迭代器对集合 ...

随机推荐

  1. WinForm读写App.config配置文件

    一.配置文件概述: 应用程序配置文件是标准的 XML 文件,XML 标记和属性是区分大小写的.它是可以按需要更改的,开发人员可以使用配置文件来更改设置,而不必重编译应用程序.配置文件的根节点是conf ...

  2. bmp

    function GetNumberBuffer(cZi: string; cwidth, cheight: Integer; FontName: string; bold, italic: Bool ...

  3. RDD转为Dataset如何指定schema?

    与RDD进行互操作 Spark SQL支持两种不同方法将现有RDD转换为Datasets.第一种方法使用反射来推断包含特定类型对象的RDD的schema.这种基于反射的方法会导致更简洁的代码,并且在编 ...

  4. linux下软件包的安装方式

    参考:https://blog.51cto.com/13589255/2071277

  5. EUI库 - 快速入口之项目配置

      egretProperties.json exmlRoot  指定exml文件存放根目录,该路径必须为相对路径,目录内只能有exml文件 themes    主题文件数组,配置所有主题文件路径,该 ...

  6. java虚拟机之JVM体系结构

    JVM体系结构: 下面重点介绍运行时数据区域模块: (1)java堆(Heap) 被所有线程共享的一块内存区域,在虚拟机启动时创建 用来存储对象实例 可以通过-Xmx和-Xms控制堆的大小 OutOf ...

  7. (1) JVM内存管理:内存模型

    引子 一段简单的代码结果引发疑问,==到底比较的是什么?equals呢? public static void main(String args[]){ String s1="abc&quo ...

  8. 实验吧Web-易-简单的sql注入之3(报错的sql盲注之exp)

    题目提示是报错注入,于是就用盲注技巧来注入. 这里注入时发现floor,extractvalue,updatexml被吃掉了,用exp可以注入成功.(记住大小写绕过等技巧) 1.爆库 ' or exp ...

  9. JavaWeb之搭建自己的MVC框架(三)

    1. 前言         在前两节的内容中,我们完成了一个基本的框架搭建.但是如果我们在前端请求中增加参数,我们要怎么传递到后台方法呢?接下来我们就来研讨这部分内容. 2. 实现         ( ...

  10. 基于python的小波阈值去噪算法

    https://blog.csdn.net/alwaystry/article/details/52756051 发表于 2018-01-10 16:32:17 嵌入式设计应用 +关注 小波图像去噪原 ...