JavaSE之包装类与字符串

Object

public class Citizen {
    int id;
    String name;
    @Override
    public boolean equals(Object obj) {
        Citizen c = (Citizen)obj;
        if(this.id == c.id) {
            return true;
        }else {
            return false;
        }
    }
}
public class Demo1 {
    public static void main(String[] args) {
        /*
         * Object类:java中所有类的父类,唯一一个没有父类的类
         * public boolean equals(Object obj):比较两个引用数据类型是否相等,但子类可以重写,指定自己的比较规则
         *  == : 可以比较基本数据或引用数据类型,比较基本数据类型是,比较的是字面真值,
         *       比较引用数据类型时,比较的是地址是否相等
         */
//      Demo1 d1 = new Demo1();
//      Demo1 d2 = new Demo1();
//      System.out.println(d1 == d2);
//      System.out.println(d1.equals(d2));
//      
//      Citizen c1 = new Citizen();
//      c1.id = 9527;
//      c1.name = "唐伯虎";
//      Citizen c2 = new Citizen();
//      c2.id = 9527;
//      c2.name = "华安";
//      System.out.println(c1.equals(c2));
        
//      String str1 = "hello";和String str2 = new String("hello");有什么区别
//      String str1 = "hello"只创建了一个hello对象
//      String str2 = new String("hello")堆里一个常量池一个
//      String str1 = "hello";
//      String str2 = new String("hello");
//      System.out.println(str1 == str2);
        // String类重写过equals,只比较字符串内容,不比较地址
//      System.out.println(str1.equals(str2));
        
//      String str1 = "hell"+new String("o");
//      String str2 = "hello";
//      System.out.println(str1 == str2);
//      System.out.println(str1.equals(str2));
    }

}

包装类

public class Demo4 {
    public static void main(String[] args) {
        // 包装类 : 将基本数据类型包装成对象
        // Everything is object
        // java中不把基本数据类型视为对象
        // 1.向基本数据一样去使用
//      int num1 = 100;
//      // 自动装箱
//      Integer num2 = 100;// Integer num2 = new Integer(100);
        // 自动拆箱
//      System.out.println(num1+num2);
//      Double d = 9.9;// Double num2 = new Double(9.9);
        
        // 2.与字符串之间进行类型转换
        String strNum1 = "1000";
//      String strNum2 = "2000";
//      System.out.println(strNum1+strNum2);
        // 字符串转成其他基本数据类型
        int num1 = Integer.parseInt(strNum1);
//      int num1 = Integer.valueOf(strNum1);
        double num2 = Double.parseDouble(strNum1);
//      double num2 = Double.valueOf(strNum2);
//      System.out.println(num2+1);
        
        //基本数据类型 转成其他字符串
//      double num1 = 100;
//      String strNum1 = num1+"";
//      String strNum2 = String.valueOf(num1);
//      String strNum3 = Double.toString(num1);
    }

}

String类的常用方法

public class StringDemo1 {

    public static void main(String[] args) {
        /*
         * 字符串类
         *  String : 代表一组“不可变”的字符串,字符串常量,对它的所有修改都是再创建新的字符串,不是在原有基础上修改的
         *  StringBuffer
         *  StringBuilder
         */
//      String str = "hello";
//      str = str + "world";
//      System.out.println(str);
        
        // 1.equals比较字符串内容是否相等
        System.out.println("hello".equals("Hello"));
        System.out.println("hello".equalsIgnoreCase("Hello"));
        
        // *2.String toUpperCase() 转成大写 
        //    String toLowerCase() 转成小写
//      String str = "hello";
//      str.toUpperCase();
//      System.out.println(str);
//      System.out.println("hello".toUpperCase());
//      System.out.println("HELLO".toLowerCase());
        
        
        // 3.char charAt(int) 返回指定索引处的字符
        System.out.println("hello".charAt(1));// e
        
        // 4.String substring(int begin)  截取字符串,
        //   String substring(int begin,int end) 从begin截取到end-1结束
        String str = "hello";
        System.out.println(str.substring(1));// ello
        System.out.println(str.substring(1, 3));// el

        // 5.int indexOf(xxx) 返回一个字符串在另一字符串当中第一次出现的索引,若一次都没有出现,返回-1
        //   int lastIndexOf() 返回一个字符串在另一字符串当中最后一次出现的索引,若一次都没有出现,返回-1
        System.out.println("abefcdefg".indexOf("efz"));
        System.out.println("abefcdefg".lastIndexOf("ef"));
    }
}

练习1:

public class Practice2 {
    public static void main(String[] args) {
        // 在一个字符串中查找e出现的次数
        String str = "adfsdeadsgeeeegsfgdfg";
        char[] c = str.toCharArray();// str.toCharArray()返回一个char数组
        int count = 0;
        for(char ch :c) {
            if(ch == 'e') {
                count++;
            }
        }
        System.out.println(count);
    }
}

练习2:查单词

public class Practice3 {
    /**
     * 返回son在father当中出现的次数
     * @param father 父串
     * @param son   子串
     * @return 次数
     */
    public static int findWord(String father,String son) {
        // 在父串中查找一次子串出现的索引
        int index = father.indexOf(son);
        int count = 0;
        while(index != -1) {
            // 计数
            count++;
            // 截取
            father = father.substring(index+son.length());
            // 再找一次
            index = father.indexOf(son);
        }
        return count;
    }

    public static void main(String[] args) {
        // 查单词: 在一个字符串中查找另一个字符串出现的次数
        System.out.println(findWord("aaaaaaaa","aa"));
    }

}

练习3:

public class Practice4 {
    /**
     * 判断是否是合法数字
     * @param num 要判断的数字
     * @return 合法返回true,不合法返回false
     */
    public static boolean getNum(int num) {
        String str[] = {"1","2","3","4","5"};
        // 1.   num是不是包含1,2,3,4,5
        for(String s : str) {
            // 检查num中是否有"1","2","3","4","5"字符串
            int index = (num+"").indexOf(s);
            if(index == -1) {
                return false;
            }
        }
        // 2.   检查是否有两个2
        if((num+"").indexOf("2") == (num+"").lastIndexOf("2")) {
            return false;
        }
        // 3.   4不能在第三位
        if((num+"").charAt(2) == '4') {
            return false;
        }
        // 4.   3和5不能相连
        if((num+"").indexOf("35") != -1 || (num+"").indexOf("53") != -1) {
            return false;
        }
        return true;
    }   
    public static void main(String[] args) {
        // 写出1,2,2,3,4,5这六个数字能组成的所有六位数组合
        // ①4不能在第三位
        // ②3和5不能相连
        for(int i = 122345;i <= 543221;i++) {
            if(getNum(i)) {
                System.out.println(i);
            }
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,591评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,448评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,823评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,204评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,228评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,190评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,078评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,923评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,334评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,550评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,727评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,428评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,022评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,672评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,826评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,734评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,619评论 2 354

推荐阅读更多精彩内容