• JAVA Class10


    学习内容:

    1.equals()方法:

    默认的方法是用来比较对象是否是同一对象,可以重写方法来实现不同功能

    public class Person {
        String name;
        int age;
        public Person(String name,int age) {
            this.name = name;
            this.age =age;
        }
        public boolean equals(Object obj) {//重写父类equals方法
            if (obj== null) {
                return false;
            }
            if(this==obj) {
                return true;
            }
            if(obj instanceof Person) {
                Person p = (Person)obj;
                return(this.age==p.age);
            }
            return false;
        }
    }
    
    public class Test {
        public static void main(String[] args) {
            Person p1 = new Person("李四",30);
            Person p2 = new Person("张三",30);
            boolean b = p1.equals(p2);
            if(b) {
                System.out.println("两人年龄相同");
            }else {
                System.out.println("两人年龄不同");
            }
    }

    2.toString()方法

    toString()方法默认返回对象物理地址,同样也可以重写

    public Test{
        public static void main(String[] args) {
            Person p1 = new Person("李四",30);
            Person p2 = new Person("张三",30);
            String s = p1.toString();
            System.out.println(s);
            System.out.println(p1);//默认调用toString
        }
    }
    
    public class Person {
        String name;
        int age;
        public Person(String name,int age) {
            this.name = name;
            this.age =age;
        }
        public String toString() {//重写toString
            return name+age;
        }
    }

    3.String

    String不属于基本数据类型,其本质是一个char类型的数组

    public class Test1 {
    
        public static void main(String[] args) {
            //String te = new String("张三");
            String te = "张三";
            System.out.println(te.hashCode());
            //String本质上是一个不可改变的字符数组
            te = "李四";//本质上是开辟了一个新的char数组来存放李四
            System.out.println(te.hashCode());
                   //两个te的hashcode不同
        }
    
    }    

    String解码输出:

    public class Test {
        public static void main(String[] args) {
            byte[] b = {97,98,99,100};//正数 ASCII码 负数根据默认的GBK码,两个字节代表一个汉字
            String s = new String(b);
            System.out.println(s.toString());//byte解码转为字符
            String s2 = new String(b,0,3);//要解码的数组,开始索引值,解码长度
            System.out.println(s2);
            char[] c = {'看','门','狗'};
            String s3 = new String(c);//执行字符拼接
            System.out.println(s3);
        }
    }

    String常用方法:

    public class Test {
        public static void main(String[] args) {
            String s = "武则天";
            int l = s.length();
            System.out.println(l);
            String s2 = s.substring(0, 1);//截取指定索引值围内的字符串,左开右闭,注意,下标基1,(0,1)就是获取第一个字符
            System.out.println(s2);
            String s3 = s.substring(2);//截取索引值2开始的字符串
            System.out.println(s3);
            System.out.println(s.startsWith("武"));//判断以...开头
            System.out.println(s.endsWith("天"));//判断以...结尾
            String s4 = "abc";
            System.out.println(s4.toUpperCase());//转为大写
            System.out.println(s.contains("武"));//判断是否包含指定字符串
            System.out.println(s.indexOf("武"));//返回指定字符串在调用字符串出现的索引值,没有返回-1
            byte[] ba = s.getBytes();//转为字节数组
            char[] cs = s.toCharArray();//转为字符数组
            for(int i=0;i<ba.length;i++) {
                System.out.print(ba[i]+" ");
            }
            for(int j=0;j<cs.length;j++) {
                System.out.print(cs[j]+" ");
            }
            String t1 = "who";
            String t2 = "WHO";
            System.out.println(t1.equals(t2));//区分大写小写,返回false
            System.out.println(t1.equalsIgnoreCase(t2));//忽略大小写,返回true
        }
    }

    4.StringBuffer与StringBuilder

    区别:StringBuffer线程安全(有同步),StringBuilder线程不安全(无同步),StringBuilder因为无同步,所以速度更快。

    public class Test {
        public static void main(String[] args) {
            //可变长度字符串,有冗余长度
            StringBuffer sb = new StringBuffer();
            sb.append("i").append("am").append("god");
            sb.insert(4, "hello");//在第四个字符位置后插入字符串
            sb.delete(4,9 );//删除第5-9字符,左开右闭
            sb.replace(1, 2,"who");//替换
            //sb.reverse();//反转
            //String tr = sb.toString();//转为字符串
            sb.append(true);
            System.out.println(sb);
        }
    
    }

     5.char基本类型的特性及用法

    char存储的字符其本质是ASCII码对应的数字,在用System.out.print输出时却是字符串,因为默认调用了toString方法

    而输出两个char相加时则输出的数字,利用这一特性,我们可以实现字母大小写的判断或者输出大小写字母。

    (1)大小写转换

    class Test{
        String s = abcDEF;
        char[] c = s.toCharArray();
        for(int i=0;i<c.length;i++) {
                if(c[i]>='A'&&c[i]<='Z') {
                    c[i]+=32;
                }else if(c[i]>='a'&&c[i]<='z') {
                    c[i]-=32;
                            }
         System.out.print(c[i]+"");
    }

    (2)输出大写或小写字母表

    public class Print {
        public void output(int x) {
            char A = 'A';
            char a = 'a';
            if(x==1) {
                for(int i=0;i<26;i++) {
                    System.out.print(A+" ");
                    A++;
                }
            }
            if(x==2) {
                for(int i=0;i<26;i++) {
                    System.out.print(a+" ");
                    a++;
                }
            }
        }
    }
  • 相关阅读:
    bzoj 3122 [Sdoi2013]随机数生成器(逆元,BSGS)
    归并排序
    MS-coco数据集下载及使用(转)
    转-深度学习视觉领域常用数据集汇总
    opencv-Mat数据类型及位数总结
    opencv-图像类型、深度、通道
    opencv-VS2010配置opencv2.4.8
    opencv-访问Mat中每个像素的值
    VS2010文件包含
    转载: 8个月从CS菜鸟到拿到Google Offer的经历+内推
  • 原文地址:https://www.cnblogs.com/whwjava/p/8692487.html
Copyright © 2020-2023  润新知