A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

java学习第8天,主要讲解了String类、static关键字、Arrays类、Math类的常用方法,不用死记硬背,后期使用时查API和百度搜索使用,下附今天课堂笔记总结
day08【String类、static关键字、Arrays类、Math类】


1、能够使用String类的构造方法创建字符串对象
        字符串的特点:
                字符串是常量,一旦被创建用不可变
                正因为字符串不可改变,所以字符串是可以共享使用的
                字符串效果上相当于是char[]字符数组,但是底层原理是byte[]字节数组
        创建字符串的常见3+1种方式
                三种构造方法:
                        public String();创建一个空白字符串,不含有任何内容
                                String str = new String();
                                System.out.println("str:"+str);
                        public String(char[] array);根据字符数组的内容,来创建对应的字符串
                                char[] char = {"A","B","C","D","E"};
                                String str = new String(char);
                                System.out.println("str:"+str);
                        public String(byte[] array);根据字节数组的内容,来创建对应的字符串
                                byte[] byte = {97,98,99,100};
                                String str = new String(byte);
                                System.out.println("str:"+str);
                一种直接创建:
                        String str = "Hello";
       
2、能够使用文档查询String类的判断方法
        能够明确String类的构造方法创建对象,和直接赋值创建字符串对象的区别
        字符串常量池:程序当中直接写上的双引号字符串,就在字符串常量池中
       
        对于基本类型来说:== 是进行数值的比较
        对于引用类型来说:== 是进行【地址值】的比较
       
        ==是进行对象的地址值比较,如果确实需要字符串内容比较,可以使用如下方法:
                public boolean equals(Object obj):参数可以是任何对象,只有参数是一个字符串并且内容相同才会为true,否则返回false
                        equals方法注意事项:
                                任何对象都能使用Object进行接收
                                equals方法具有对称性,也就是a.equals(b)和b.equals(a)效果一样
                                如果比较双放一个常量一个变量,推荐把常量字符串写在前面
                                        推荐:"abc".equals(str)    不推荐:str.equals("abc")
                public boolean equalsIgnoreCase (String anotherString) :将此字符串与指定对象进行比较,忽略大小写
                                       
3、能够使用文档查询String类的获取方法
        public int length():获取字符串当中含有的字符个数,拿到字符串长度
        public String concat(String str):将指定的字符串连接到该字符串的末尾,返回新的字符串
        public char charAt(int index):获取指定索引位置的单个字符(索引从0开始)
        public in indexOf(Stirng str):查找参数字符串在本字符串当中首次出现的索引位置,如果没有,返回-1值
        public Stirng substring(int index):截取从参数位置一直到字符串末尾,返回新字符串
        public String substring(int begain,in end):截取从begain开始,一直到end结束,中间的字符串。注意:[begain,end),左闭右开区间
       
        字符串的分割方法:
                public Stirng[] split(String regex):按照参数的规则,将字符串切分成为若干部分
                        注意事项:
                                split方法的参数其实是一个“正则表达式”,今天要注意,如果按照引文据点“.”进行切分,必须写“\\.”才能切分成功
               
4、能够使用文档查询String类的转换方法
        public char[] toCharArray():将当前字符串拆分成为字符数组作为返回值
        public byte[] getBytes():把字符串转换为字节数组
        public String replace(CharSequence oldStirng,CharSequence new String);
                将所有出现的老字符串替换成为新的字符串,返回替换之后的结果新字符串
                CharSequence意思就是可以接收字符串类型
       
5、能够理解static关键字
        一旦用了static关键字,那么这样的内容不在属于对象自己,而是属于类的,所以凡是本来的对象,都共享同一份
        一旦使用static修饰成员方法,那么这就成为了静态方法。静态方法不属于对象,而是属于类
                如果没有static关键字,那么必须首先创建对象,然后通过对象才能使用
                对于静态方法来说,可以通过对象名进行调用,也可以通过类名称来调用(推荐使用类名称来进行调用)
                对于本来当中的静态方法,可以省略类名称,直接写方法名称调用
               
        注意事项:       
                静态方法可以直接访问类变量和静态方法。
                静态方法不能直接访问普通成员变量或成员方法。反之,成员方法可以直接访问类变量或静态方法。
                静态只能访问静态,不能访问非静态(因为在内存中【先】有的静态内容,【后】有的非静态内容)
                静态方法中不能使用this关键字(this代表当前对象,通过谁调用的方法,谁就是当前对象,静态方法中没有对象,而是通过类名称直接调用)
                根据类名称访问静态成员变量的时候,全程和对象就没关系,只和类有关系
       
        package com.itheima.test01;


        public class Student {
                private int id;
                private String name;
                private int age;
                static String room;//被static修饰,所有对象共享共一份,所有学生都在同一间教室
                private static int idCount = 0;//学号计数器,每当new了一个新对象,计数器自增1


                public Student() {


                }


                public Student(String name, int age) {
                        this.name = name;
                        this.age = age;
                        this.id = ++idCount;//由于学号要求new对象时自动增加1,所有不能作为参数写在Student构造方法参数列表中
                }


                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;
                }
        }


        package com.itheima.test01;


        import static com.itheima.test01.Student.room;


        public class StaticStudentTest01 {
                public static void main(String[] args) {
                        //创建学生对象
                        Student sd1 = new Student("赵丽颖",29);
                        //给学生对象设置教室,因room被static修饰,所以只创建一次,其他学生对象直接调用即可
                        Student.room = "804教室";
                        Student sd2 = new Student("唐嫣",30);


                        System.out.println("学号:"+sd1.getId()+",姓名:"+sd1.getName()
                                        +",年龄:"+sd1.getAge()+",所在教室:"+Student.room);
                        System.out.println("学号:"+sd2.getId()+",姓名:"+sd2.getName()
                                        +",年龄:"+sd2.getAge()+",所在教室:"+Student.room);
                }
        }


6、能够写出静态代码块的格式
        public class 类名称{
                static{
                        //静态代码块内容
                }
        }
        特点:当第一次用到本类时,静态代码块执行唯一的一次
        静态内容总是优先于非静态,所以静态代码块比构造方法先执行
       
        静态代码块的典型用途:
                用来一次性的对静态成员变量进行赋值
       
7、能够使用Arrays类操作数组
        java.util.Arrays是一个与数组相关的工具类,里面提供了大量静态方法,用来实现数组常见的操作
       
        public static String toString(数组):将参数数组变成字符串(默认格式:[元素1,元素2,元素3...])
        public static void sort(数组):按照默认升序(从小到大)对数组的元素进行排序
                如果是数值,sort默认按照升序从小到大
                如果是字符串,sort默认按照字母升序
                如果是自定义的类型,那么这个自定义的类需要有Comparable或者Comparator接口的支持(今后学习)
        public static void main(String[] args) {
        int[] array = {1, 5, 2, 8, 3, 4};
        //将int[]数组按照默认格式变成字符串
        String s = Arrays.toString(array);
        System.out.println(s);//[1, 5, 2, 8, 3, 4]


        //把数组内的元素按照升序排列
        Arrays.sort(array);
        System.out.println(Arrays.toString(array));//[1, 2, 3, 4, 5, 8]
    }
8、能够使用Math类进行数学运算
        public static double abs(double a) :返回 double 值的绝对值。
                double d1 = Math.abs(‐5); //d1的值为5
                double d2 = Math.abs(5); //d2的值为5
        public static double ceil(double a) :向上取整,返回大于等于参数的最小的整数。
                double d1 = Math.ceil(3.3); //d1的值为 4.0
                double d2 = Math.ceil(‐3.3); //d2的值为 ‐3.0
                double d3 = Math.ceil(5.1); //d3的值为 6.0
        public static double floor(double a) :向下取整,返回小于等于参数最大的整数。
                double d1 = Math.floor(3.3); //d1的值为3.0
                double d2 = Math.floor(‐3.3); //d2的值为‐4.0
                double d3 = Math.floor(5.1); //d3的值为 5.0
        public static long round(double a) :返回最接近参数的 long。(相当于四舍五入方法)
                long d1 = Math.round(5.5); //d1的值为6.0
                long d2 = Math.round(5.4); //d2的值为5.0
        Math.PI代表近似的圆周率常量(double)

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马