《java学习笔记》之常用类(String类,StringBuffer类和StringBuilder类,Integer类,Date类,BigDecimal类,DecimalFormat类

//判断数组长度是length属性,判断字符串是length()方法

System.out.println(“java”.length());//4

//11(掌握)public int indexOf(String str)

//返回指定子字符串在此字符串中最后一次出现处的索引

System.out.println(“python,java,c,java,python,c++,java,c,VB”.lastIndexOf(“java”));//30

//12(掌握)public String replace(CharSequence target,CharSequence replacement)

//String类型的父接口:CharSequence

//使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。

System.out.println(“python,java,c,java,python,c++,java,c,VB”.replace(“python”,“PHP”));//PHP,java,c,java,PHP,c++,java,c,VB

//13(掌握)public String[] split(String regex)

//根据给定正则表达式的匹配拆分此字符串

//例如,字符串 “boo:and:foo” 使用这些表达式可生成以下结果:

//Regex 结果

//: { “boo”, “and”, “foo” }

//o { “b”, “”, “:and:f” }

String[] chaifeng = “2020-3-17-18-16”.split(“-”);

for (int i = 0; i <chaifeng.length ; i++) {

System.out.print(chaifeng[i] + " ");//2020 3 17 18 16

}

System.out.println();

//14(掌握)public boolean startsWith(String prefix)

//测试此字符串是否以指定的前缀开始。

System.out.println(“www.baidu.com”.startsWith(“www.”));//true

//15(掌握)

// public String substring(int beginIndex)

// 返回一个新的字符串,它是此字符串的一个子字符串。该子字符串从指定索引处的字符开始,直到此字符串末尾。

//public String substring(int beginIndex,int endIndex)

//返回一个新字符串,它是此字符串的一个子字符串。

// 该子字符串从指定的 beginIndex 处开始(包括)

// 直到索引 endIndex - 1 处的字符(不包括)。因此,该子字符串的长度为 endIndex-beginIndex。

//子串的长度:endIndex - beginIndex

System.out.println(“http://www.baidu.com”.substring(7));//www.baidu.com

System.out.println(“http://www.baidu.com”.substring(7,10));//www

//16(掌握)public char[] toCharArray()

//将此字符串转换为一个新的字符数组。

char[] chars1 = “我是一个中国人”.toCharArray();

for (char c:chars1){

System.out.print(c + " ");//我 是 一 个 中 国 人

}

System.out.println();

//17(掌握)public String toLowerCase()

//将此 String 中的所有字符都转换为小写

System.out.println(“HELLO WORLD”.toLowerCase());//hello world

//18(掌握)public String toUpperCase(Locale locale)

//将此 String 中的所有字符都转换为大写

System.out.println(“hello world”.toUpperCase());//HELLO WORLD

//19(掌握)public String trim()

//返回字符串的副本,忽略前导空白和尾部空白。

System.out.println(" hello world ".trim());//hello world

//20(掌握)String中只有一个方法是静态方法,不用new对象

//valueof

//将不是字符串的东西转化成字符串

System.out.println(String.valueOf(true));//true

String s = String.valueOf(123);

System.out.println(s);//123

}

}

二.StringBuffer类和StringBuilder类


//为什么要用StingBuffer和stringBuilder

//因为如果频繁进行字符串的拼接,用String的话,会造成内存损耗严重

//StringBuffer和StringBuilder的区别:

//StringBuffer的方法都有 synchronized修饰

//StringBuilder的方法都没有synchronized修饰

//StringBuffer线程安全

public class StringBufferTest {

public static void main(String[] args) {

//创建StringBuffer对象

//构造一个其中不带字符的字符串缓冲区,初始容量为 16 个字符。

StringBuffer buffer1 =new StringBuffer();

//字符串拼接

buffer1.append(123);

buffer1.append(true);

buffer1.append(“abc”);

System.out.println(buffer1);//123trueabc

//byte数组满了的话,append可以自动扩容

//给定初始化的StringBuffer

StringBuffer buffer =new StringBuffer(100);

//stringBuilder

//创建stringBuilder对象

StringBuilder builder = new StringBuilder();

//拼接

builder.append(123);

builder.append(true);

builder.append(“abc”);

System.out.println(builder);

}

}

三.Integer类


3.1装箱和拆箱

/*

  1. 8种基本数据类型类型对应的包装类

基本数据类型 包装类型


byte java.lang.Byte(父类Number)

short java.lang.Short(父类Number)

int java.lang.Integer(父类Number)

long java.lang.Long(父类Number)

float java.lang.Float(父类Number)

double java.lang.Double(父类Number)

boolean java.lang.Boolean(父类Object)

char java.lang.Character(父类Object)

2.以上8种类型以Integer为重点学习,其余的照葫芦画瓢

3.8种包装类中有6个父类是Number,可以先研究Number类

Number是抽象类,无法实例化对象

Number中有这几种方法:

用来拆箱的:

abstract byte byteValue() 以 byte 形式返回指定的数值。

abstract double doubleValue() 以 double 形式返回指定的数值。

abstract float floatValue() 以 float 形式返回指定的数值。

abstract int intValue() 以 int 形式返回指定的数值。

abstract long longValue() 以 long 形式返回指定的数值。

abstract short shortValue() 以 short 形式返回指定的数值。

这些方法包装类的子类都有,用来拆箱的

*/

public class IntegerTest01 {

public static void main(String[] args) {

//基本数据类型 转换为 引用数据类型(装箱)

Integer integer1 = new Integer(123);

//引用数据类型转化成基本数据类型(拆箱)

int i1 = integer1.intValue();

/*

  • 构造方法有两个

  • Integer(int i )

  • Integer(String string)

  • */

//JDK9之后就不建议使用这个构造方法了,出现横线表示已过时了

//int —> Integer

Integer integer2 =new Integer(456);

//String —> Integer

Integer integer3 =new Integer(“123”);

//通过访问包装类的常量,来访问最大和最小值

System.out.println(“int的最大值” + Integer.MAX_VALUE);

System.out.println(“int的最小值” + Integer.MIN_VALUE);

System.out.println(“double的最大值” + Double.MAX_VALUE);

System.out.println(“double的最小值” + Double.MIN_VALUE);

/* int的最大值2147483647

int的最小值-2147483648

double的最大值1.7976931348623157E308

double的最小值4.9E-324

  • */

}

}

3.2 自动拆箱和自动装箱以及整数常量池

/*(JAVA5)JDK1.8之后支持自动拆箱和装箱

//自动装箱:基本数据类型自动转化成包装类

//自动拆箱:包装类转化成自动基本数据类型

//有了自动拆箱后,Number类中的方法就用不着了

//自动拆箱的好处: 便于编程*/

public class IntegerTest02 {

public static void main(String[] args) {

//自动装箱

//int ----> Integer

//右边的int 直接 赋给了左边的 Integer类型的 integer1

Integer integer1 = 123;

//自动拆箱

//Integer —> int

//右边的 Integer类型的 integer1 直接赋给了 左边的 int类型的 i1

int i1 = integer1;

//但是integer2内部保存的还是内存地址

Integer integer2 = 100;

System.out.println(integer2 + 1);//101

//因为这里进行了自动拆箱, + 两边要求是基本数据类型

//证明内部存储的是内存地址可以这样

Integer integer3 = 1000;

Integer integer4 = 1000;

System.out.println("integer3 = integer4 " + (integer3 == integer4));//integer3 = integer4 false

//内存地址不同所以不同

//注意:

//java中为了提高效率

//将[-128,127]之间的所有包装对象提前创建好了

//放到了方法区的"整数型常量池"当中,目的是提高开发效率

//只要在跟这个区间类的数据不需要在new对象,直接从整数型常量池中取出来

//举列

Integer a = 127;

Integer b = 127;

Integer c = 128;

Integer d = 128;

System.out.println("a = b "+ (a==b));//a = b true

System.out.println("c = d "+ (c==d));//c = d false

//这是因为 a和b并未创建对象,直接指向整数常量池

//而c和d创建了两个不一样的对象,所以内部存储的内存地址不一样

}

}

3.3 总结 Integer,int和String之间的转化

package caopeng.javase.test;

public class IntegerTest03 {

public static void main(String[] args) {

//int --> Integer

int i1 =100;

//自动装箱

Integer integer1 = i1;

//public static Integer valueOf(int i)

//返回:表示 i 的 Integer 实例。

Integer integer2 = Integer.valueOf(i1);

//int --> String

int i2 = 100;

String str1 = String.valueOf(i2);

//Integer --> int

//可以自动拆箱

//也可以手动拆箱

int i3 = integer2.intValue();

//Integer --> String

String str2 = String.valueOf(Integer.valueOf(100));

//String --> int

String str3 =“123”;

//实际上是先变成Integer再自动拆箱

int i4 = Integer.parseInt(str3);

//String --> Integer

//Integer integer3 = Integer.parseInt(“中国”);//NumberFormatException 数组格式化异常

Integer integer3 = Integer.parseInt(“123”);

}

}

四.Date类


4.1 如何格式化输出时间

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

public class DateTest01 {

public static void main(String[] args) {

//创建一个时间对象

Date nowTime =new Date();

//可以输出当前时间

System.out.println(nowTime);//Fri Apr 10 13:02:05 CST 2020

//如何格式化输出呢,符合中国人的习惯呢?

SimpleDateFormat simpleDateFormat =new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss:SSS”);

String strTime = simpleDateFormat.format(nowTime);

System.out.println(strTime);//2020-04-10 13:05:27:087

//如何时间变回原样呢

String time = “2001-04-08 00:00:00:000”;

SimpleDateFormat simpleDateFormat2 =new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss:SSS”);

//这个会抛异常

try {

//simpleDateFormat2.parse(time) 会返回一个Date对象

System.out.println(simpleDateFormat2.parse(time));

} catch (ParseException e) {

e.printStackTrace();

}

}

}

4.2 计算一个程序执行时间

//计算一个程序执行的时间

public class DateTest02 {

public static void main(String[] args) {

//系统现在的时间精确到毫秒

//当前时间与协调世界时 1970 年 1 月 1 日午夜之间的时间差(以毫秒为单位测量)。

long nowTime = System.currentTimeMillis();

System.out.println(nowTime);//1586495523154

long beginTime = System.currentTimeMillis();

print();

long endTime =System.currentTimeMillis();

System.out.println(“这方法执行了” + (endTime - beginTime) + “毫秒”);//这方法执行了1574毫秒

}

//打印100000个数字

public static void print(){

for (int i = 0; i <= 100000; i++) {

System.out.println(i);

}

}

}

4.3 输出 此时一天/一个月/一年 前的时间

import java.text.SimpleDateFormat;

import java.util.Date;

public class DateTest03 {

public static void main(String[] args) {

SimpleDateFormat simpleDateFormat =new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss:SSS”);

//Date构造方法

//第一种,可以得出系统当前时间

Date date1 =new Date();

System.out.println(simpleDateFormat.format(date1));//2020-04-10 13:22:27:445

//第二种,可以得出距离,过了多久

//参数是long类型

Date date2 =new Date(0L);

System.out.println(simpleDateFormat.format(date2));//1970-01-01 08:00:00:000

//输出一天前的时间

Date date =new Date(System.currentTimeMillis() - 10006060*24);

String strTime = simpleDateFormat.format(date);

System.out.println(strTime);//2020-04-09 13:23:43:277

}

}

五.BigDecimal类


/*

  • BigDecimal 属于大数字,精度极高,不属于基本数据类型,属于java对象(引用数据类型)

  • 这是SUN提供的一个类,专门用于财务软件当中

  • */

public class BigDecimalTest {

public static void main(String[] args) {

//精度极高的100

BigDecimal bigDecimal1 =new BigDecimal(100);

//精度极高的200

BigDecimal bigDecimal2 =new BigDecimal(200);

//不能直接求和,因为是引用

BigDecimal bigDecimal3 =bigDecimal1.add(bigDecimal2);

System.out.println(bigDecimal3);//300

}

}

六.DecimalFormat类


/*

  • 数字的格式化

  • */

public class DecimalFormatTest01 {

public static void main(String[] args) {

//java.text.DecimalFormat

//DecimalFormat decimalFormat = new DecimalFormat(“数字格式”);

/*

  • 数字格式有哪些?

  • 表示任意数字

  • ,表示千分位

  • .表示小数点

  • 0 表示 不够时补0

  • ###,##.##

  •   表示:加入千分位,保留两位小数
    
  • */

DecimalFormat decimalFormat = new DecimalFormat(“###,##.##”);

String string = decimalFormat.format((1234.56));

System.out.println(string);//12,34.56

DecimalFormat decimalFormat2 = new DecimalFormat(“###,##.0000”);//保留4位小数,不够时补0

String string1 = decimalFormat2.format(1234.56);

System.out.println(string1);//12,34.5600

}

}

七. Random类


7.1 random类的简单说明

import java.util.Random;

public class RandomTest {

public static void main(String[] args) {

Random random =new Random();

int i = random.nextInt();

System.out.println(i);

//输出范围内的随机数

//输出0-100的随机数

int a =random.nextInt(101);

System.out.println(a);

}

}

7.2

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

读者福利

分享一份自己整理好的Java面试手册,还有一些面试题pdf

不要停下自己学习的脚步

字节跳动的面试分享,为了拿下这个offer鬼知道我经历了什么

字节跳动的面试分享,为了拿下这个offer鬼知道我经历了什么

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。[外链图片转存中…(img-G1PgPWZ3-1713513941965)]

[外链图片转存中…(img-O7qX6uio-1713513941968)]

[外链图片转存中…(img-XntvQsEC-1713513941970)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

读者福利

分享一份自己整理好的Java面试手册,还有一些面试题pdf

不要停下自己学习的脚步

[外链图片转存中…(img-vy0h3vLf-1713513941972)]

[外链图片转存中…(img-NWBXJ2Wt-1713513941973)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值