Java学习笔记5

字符串

String 类  引用类型  默认值:null

字符串的声明:

String str = “abc你好”;

字符串的拼接

 +  加号在拼接字符串和加法运算时优先级是一样的

字符串和所有类型相加(+)后得到的都是字符串

例如:

str = "123"+"abc";//"123abc"

str = "123"+"23";//"12323"

str = "123"+new Object();//"123"+这个对象的toString的结果

str =  "123"+new int[]{1,2,3};

System.out.println(str);

System.out.println("123" + 123 + 123);//输出为123123123

System.out.println(123 + 123 + "123");//输出为246123

字符串比较

 使用equals方法比较字符串

例如:

boolean bool = "123".equals("123");//true

String strA = new String("123");

String strB = new String("123");

bool =strA.equals(strB);//true  equals检查字符串内容是否一样

System.out.println(bool);

bool = strA==strB;

System.out.println(bool);

String类型中的常用方法

valueOf--将传入的参数转成字符串

例如:

String.valueOf('1');

查找子串出现的位置(index)  找不到返回-1

int index = "123456".indexOf("34");//第一个字符出现的位置

System.out.println(index);

想找最后一个要倒着(lastIndexOf)

index = "123123123".lastIndexOf("1");//返回6

System.out.println(index);

获取指定位置的字符 (charAt)

char item ="123456".charAt(4);//会返回5

System.out.println(item);

截取字符串,获取一段字符串(substring)

str = "123456".substring(1);//只有结束位置

System.out.println(str);

str = "123456".substring(1,4);//包含开始位置,不包含结束位置

System.out.println(str);

替换(replace)

str="12345634".replace("34","AA");//"12AA56AA"

        System.out.println(str);

        str="12。31。23".replaceAll(".","A");//"AAAAAAAA"  .在这里表示任意字符

        System.out.println(str);

分割字符串(split)

String[] strArr = "123123123".split("2");//输出为"1, 31, 31, 3"

//切割点在前面前面会有一个空串,在后面则不管

String[] strArr = "1231231231".split("1");//输出为",23,23,23"

获取字符串长度(length)

int l = "123123".length();

去除前后空白位(trim)

可以去除 空格 \n \r \t   

之可以去除前后的,中间的不会被去除

例如:

String strC = "\n\r    A12   SS       \n   388       ";

System.out.println(strC);

System.out.println("==-----------------------");

System.out.println(strC.trim());

System.out.println("==-----------------------");

针对字母的大写(toUpperCase)

String str = "123abc".toUpperCase();

System.out.println(str);

针对字母的小写(toLowerCase)

String str = "123ABCabc".toLowerCase();

System.out.println(str);

判断是否是空串(isEmpty)

Boolean bool= "123".isEmpty();//是空返回true 不是空返回false

System.out.println(bool);

是否从指定的字符开始(startsWith)

"123456".startsWith("1");//true 是否从1开始

是否以指定字符结束(endsWith)

"123456".endsWith("6");//false 是否是到6结束

String  对象  定义后就不可改变   或者说定义的量都是常量

private final 修饰value数组

字符串怎样加入到常量池中----使用量的方式生命的字符串就会加入到常量池中

int a = 12;

String str = "abc";

Integer.valueOf("23");

char[] arr = {'a','b','c'};

str = new String(arr);

程序中第一次使用量的形式定义“123”字符串,会将这个字符串存入<字符串常量池中>

之后再使用量的形式使用该对象,就直接使用常量池中的对象

验证

String strA = "123";

String strB = "123";

System.out.println(strA==strB);//都是一个地方的量,结果是true

Intern

返回 str对象在字符串常量池中的副本对象

过程:检查str是否在字符串常量池中存在副本,如果不存在就复制一份存入到常量池中

        然后返回常量池中的副本对象

        如果已经存在副本对象,直接返回副本对象

        所以 两个字符串 equals 为true

name 两个字符串的intern方法==

strA = new String("123123");

strB = new String("123123");

System.out.println(strA.equals(strB));//true

System.out.println(strA==strB);//false

System.out.println(strA.intern()==strB.intern());//ture

如何在排列用String定义的字符串时不生成中间串

StringBuilder(线程不安全但效率快)  StringBuffer(线程安全但效率慢)

两者方法并无太大区别所以只用StringBuilder的方法演示

StringBuilder strB = new StringBuilder();

strB.append("123");

strB.append("abc");

strB.append("456");

往StringBuilder数组中追加字符(append)

其中不会产生字符串对象

System.out.println(strB.toString());

StringBuilder 默认容量是16

StringBuilder 扩容

追加字符时容量不够就需要扩容(value) 默认 原来的容量*2+2 或还不够需要多大给多大

数组复制

数组复制 从哪、第几个、到哪、第几个开始、复制几个

System.arraycopy(src,0,dest,0,23);

Date时间类型

long  表示时间每一毫秒加1 1970-1-1 00:00:00 000

获取当前时间(执行程序时的时间)

Date date = new Date();

System.out.println(date);

显示当前时间的数字即从1970-1-1 00:00:00 000开始每一毫秒加1,到现在总共的数字

long time = date.getTime();

System.out.println(time);

显示一定时间后的时间

time = time+2*24*60*60*1000;

date=new Date(time);

System.out.println(date);

特殊:月份的计数是从0到11

时间格式化(为了符合中国的看时间习惯)

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");

System.out.println(sdf.format(date));

本地时间显示

LocalDateTime ldf =LocalDateTime.now();

本地时区显示

ZonedDateTime zdt = ZonedDateTime.now();

System.out.println((zdt.getZone()));

真假随机数

假随机数Random

这个的随机数会受到()中种子的影响

Random ranObj=new Random(12);//这个的随机数会受到()中种子的影响

真随机数

double ran = Math.random();//[0,1)随机取一个0~1的数

取整

方法一:四舍五入

long num = Math.round(ranNum);

System.out.println(num);

特殊:int intNum=Math.round(12.33f);//如果数是flout类型的返回值是int

方法二:向上取整

double ceilNum = Math.ceil(ranNum);

System.out.println(ceilNum);

方法三:向下取整

double floorNum = Math.floor(ranNum);

System.out.println(floorNum);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值