Java基础之常用类库---数字与字符串

所有的基本类型,都有对应的类类型

byte类型封装类Byte,short类型封装类Short,int类型封装类Integer,long类型封装类Long,char类型封装类Character,float类型封装类Float,double类型封装类Double

public class TestNumber {

    public static void main(String[] args) {

        int i = 5;

        //把一个基本类型的变量,转换为Integer对象

        Integer it = new Integer(i);

        //把一个Integer对象,转换为一个基本类型的int

        int i2 = it.intValue();

    }

}

装箱和拆箱

自动装箱:不需要调用构造方法,通过=符号自动把 基本类型 转换为 类类型 就叫装箱

public class TestNumber {

    public static void main(String[] args) {

        int i = 5;

        //基本类型转换成封装类型

        Integer it = new Integer(i);

        //自动转换就叫装箱

        Integer it2 = i;

    }

}

自动拆箱:不需要调用Integer的intValue方法,通过=就自动转换成int类型,就叫拆箱

public class TestNumber {

    public static void main(String[] args) {

        int i = 5;

        Integer it = new Integer(i);

        //封装类型转换成基本类型

        int i2 = it.intValue();

        //自动转换就叫拆箱

        int i3 = it;

    }

}

int的最大值,最小值可以通过其对应的封装类Integer.MAX_VALUE和Integer.MIN_VALUE

数字转字符串:

方法1: 使用String类的静态方法valueOf 

方法2: 先把基本类型装箱为对象,然后调用对象的toString

public class TestNumber {

    public static void main(String[] args) {

        int i = 5;

        //方法1

        String str = String.valueOf(i);

        //方法2

        Integer it = i;

        String str2 = it.toString();

    }

}

字符串转数字:调用Integer的静态方法parseInt

public class TestNumber {

    public static void main(String[] args) {

        String str = "999";

        int i= Integer.parseInt(str);

        System.out.println(i);

    }

}

数学方法:java.lang.Math提供了一些常用的数学运算方法,并且都是以静态方法的形式存在

public class TestNumber {

    public static void main(String[] args) {

        float f1 = 5.4f;

        float f2 = 5.5f;

        //5.4四舍五入即5

        System.out.println(Math.round(f1));

        //5.5四舍五入即6

        System.out.println(Math.round(f2));

        //得到一个0-1之间的随机浮点数(取不到1)

        System.out.println(Math.random());

        //得到一个0-10之间的随机整数 (取不到10)

        System.out.println((int)( Math.random()*10));

        //开方

        System.out.println(Math.sqrt(9));

        //次方(2的4次方)

        System.out.println(Math.pow(2,4));

        //π

        System.out.println(Math.PI);

        //自然常数

        System.out.println(Math.E);

    }

}

 格式化输出:如果不使用格式化输出,就需要进行字符串连接,如果变量比较多,拼接就会显得繁琐

使用格式化输出,就可以简洁明了,知道了解就行。

%s 表示字符串

%d 表示数字

%n 表示换行

public class TestNumber {

    public static void main(String[] args) {

        String name ="盖伦";

        int kill = 8;

        String title="超神";

        //直接使用+进行字符串连接,编码感觉会比较繁琐,并且维护性差,易读性差

        String sentence = name+ " 在进行了连续 " + kill + " 次击杀后,获得了 " + title +" 的称号";

        System.out.println(sentence);

        //使用格式化输出

        //%s表示字符串,%d表示数字,%n表示换行

        String sentenceFormat ="%s 在进行了连续 %d 次击杀后,获得了 %s 的称号%n";

        System.out.printf(sentenceFormat,name,kill,title);

    }

}

字符串:字符串即字符的组合,在Java中,字符串是一个类,所以我们见到的字符串都是对象 ,String 被修饰为final,所以是不能被继承的。

常见创建字符串手段: 

1. 每当有一个字面值出现的时候,虚拟机就会创建一个字符串 

2. 调用String的构造方法创建一个字符串对象 

3. 通过+加号进行字符串拼接也会创建新的字符串对象 

public class TestString {

    public static void main(String[] args) {

        String garen ="盖伦"; //字面值,虚拟机碰到字面值就会创建一个字符串对象

        String teemo = new String("提莫"); //创建了两个字符串对象

        char[] cs = new char[]{'崔','斯','特'};

        String hero = new String(cs);//  通过字符数组创建一个字符串对象

        String hero3 = garen + teemo;//  通过+加号进行字符串拼接

    }

}

字符串常用方法:

charAt    获取字符

toCharArray    获取对应的字符数组

subString    截取子字符串

split    分隔

trim    去掉首尾空格

toLowerCase    全部变成小写 

toUpperCase    全部变成大写

indexOf    判断字符或者子字符串出现的位置

lastIndexOf    判断字符或者子字符串最后出现的位置

contains    是否包含子字符串

replaceAll    替换所有的

replaceFirst    只替换第一个

判断字符串对象是否相等用==,判断字符串内容是否相等用equals()

public class TestString {

    public static void main(String[] args) {

        String str1 = "the light";

        String str2 = new String(str1);

        String str3 = str1.toUpperCase();

        //==用于判断是否是同一个字符串对象

        System.out.println( str1  ==  str2);

        System.out.println(str1.equals(str2));//完全一样返回true

        System.out.println(str1.equals(str3));//大小写不一样,返回false

        System.out.println(str1.equalsIgnoreCase(str3));//忽略大小写的比较,返回true

    }

}

startsWith //以...开始,endsWith //以...结束

public class TestString {

    public static void main(String[] args) {

        String str1 = "the light";

        String start = "the";

        String end = "Ight";

        System.out.println(str1.startsWith(start));//以...开始

        System.out.println(str1.endsWith(end));//以...结束

    }

}

StringBuffer:StringBuffer是可变长的字符串

StringBuffer的常用方法:append追加 ,delete 删除 ,insert 插入 ,reverse 反转

public class TestString {

    public static void main(String[] args) {

        String str1 = "let there ";

        StringBuffer sb = new StringBuffer(str1); //根据str1创建一个StringBuffer对象

        sb.append("be light"); //在最后追加

        System.out.println(sb);

        sb.delete(4, 10);//删除4-10之间的字符

        System.out.println(sb);

        sb.insert(4, "there ");//在4这个位置插入 there

        System.out.println(sb);

        sb.reverse(); //反转

        System.out.println(sb);

    }

}

StringBuild:StringBuild也是可变的字符串长度

大部分情况,StringBuild和StringBuffer方法相同,通过new新建StringBuilder,通过append添加字符串,然后通过toString获取构建完成的字符串。

StringBuilder sb = new StringBuilder();//创建StringBuild

sb.append(",探索编程本质");//添加字符串

System.out.println(sb.toString());//获取构建后的字符串,通过toString方法

经典面试题:String,StringBuffer,StringBuild有什么区别?(曾经就被阿里的电面问了这个,那个时候还是个小白,没答出来)

String、StringBuffer与StringBuilder之间区别

个人觉得这个博客讲得挺明了,初学者都能懂!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容

  • 本文是我自己在秋招复习时的读书笔记,整理的知识点,也是为了防止忘记,尊重劳动成果,转载注明出处哦!如果你也喜欢,那...
    波波波先森阅读 820评论 1 6
  • 你看 这里一片荒凉 连我的想念都无处安放 只好再次打扰你 取消无期刑期 许我归矣 今晚的夜色太安静 连思念都纹丝...
    黄小邪师傅阅读 182评论 0 0
  • 昨天算了算时间,从去年10月上一家创业公司因为融资不到位倒闭清算后,回家做自由职业者也已经有快一年时间了。这一年里...
    布朗妮阅读 468评论 1 4
  • 现在的交通工具可谓是五花八门啦,飞机,高铁,轮船,自驾等等,而现在的人们也越来越喜欢出去到处走走,欣赏一下祖国的大...
    胡锡锡阅读 483评论 0 2
  • 这本是一个十分平静的夜晚,和过往的有月或无月的夜晚一样,如此美丽而平静。就在这一天的下午,我和小凌计划着明天的见面...
    弘玥阅读 235评论 2 4