zoukankan      html  css  js  c++  java
  • 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_练习:按指定格式拼接字符串

    /*
    题目:
    定义一个方法,把数组{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;
        }
    
    }
    public class Demo06StringPractise

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

    /*
    题目:
    键盘输入一个字符串,并且统计其中各种字符出现的次数。
    种类有:大写字母、小写字母、数字、其他
    
    思路:
    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);
        }
    
    }
    public class Demo07StringCount

    day08_11_静态static关键字概述

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

    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;
        }
    }
    public class Student
    /*
    如果一个成员变量使用了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());
        }
    
    }
    public class Demo01StaticField

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

    day08_14_静态static的内存图

    day08_15_静态代码块 

     


    day08_16_数组工具类Arrays

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

    day08_17_Arrays练习:字符串倒序

    /*
    题目:
    请使用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]);
            }
        }
    
    }
    public class Demo02ArraysPractise

    day08_18_数学工具类Math

    /*
    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
        }
    
    }
    Demo03Math

    day08_19_Math练习:小学数学真题

    /*
    题目:
    计算在-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
        }
    
    }
    Demo04MathPractise

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

    参考资料:

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

    end

    部分内容来自于学习编程期间收集于网络的免费分享资源和工作后购买的付费内容。
  • 相关阅读:
    Silverlight 2中实现文件上传和电子邮件发送
    Silverlight结合Web Service进行文件上传
    silverlight DataGrid 内嵌ComboBox 实现加载和保存
    silverlight 使用IValueConverter 转换
    检测场所条件查询
    代码中的坏味道
    Prism初研究之Bootstrapper
    Prism初研究之简介
    编写可读代码的艺术
    ffmpeg怎么样处理网络流
  • 原文地址:https://www.cnblogs.com/MarlonKang/p/11832680.html
Copyright © 2011-2022 走看看