Java学习之路-day09

今天首先对之前学习的知识点做一些补充:
1、char c = ‘a’ +1;
这是写法是正确的,因为’a’和数字1 都是常量,在运算中会触发常量优化机制,同时两个常量相加后的结果范围在char的取值范围中,所以正确写法
2、if判断的大括号是可以省略的,如果省略只能控制距离它最近的那条语句

a = 20;
if(a ==  10)
System.out.println(a);//这条语句将不会被执行,因为if条件判断是false值
System.out.println(b);//因为没有if省略了大括号,所以if只对离他最近的那条有效,这条语句将会被执行打印输出b

3、三元表达式中,表达式A和表达式B【一定要有一个结果,不能直接写输出语句】;

int a>b?System.out.println(a),System.out.println(b);//三元运算符,表达式A和表达式B不能直接写成打印输出语句,这是一个错误写法

4、switch()—>小括号中可以存储的数据类型:
基本数据类型:byte short int char
引用类型: String enum枚举类型
【case穿透的应用:根据月份来判断季节】
5、死循环:
1、while(true){}
2、for(;?{}
for里面什么都没有写,此时将是一个死循环,变量初始化没有定义,条件判断为true,步进表达式没有
【下面是今天学习的新知识,需要反复练习】
【注意】程序当中所有的【双引号字符串,都是String类的对象,就算是没new也是】
字符串的特点:
1、字符串的内容永不改变,字符串是常量,一旦被创建是不可改变的,定义的变量存储的是地址值
2、正是因为字符串不可改变的,所以字符串是可以共享使用的
3、字符串效果上相当于【char[]字符数组,但是底层原理是byte[]字符数组】
【1】创建字符串的常见的3+1种方法:
【a】三种构造方法:
public String();//创建一个空白字符串,不含有任何内容;
public String(char[] array);//根据字符数组的内容,来创建对应的字符串
public String(byte[] array);//根据字节数组的内容,来创建对应的字符串
【b】一种直接创建:
String str = “Hello”;//右边直接用双引号,进行创建
【注意】:直接写上双引号,就是字符串对象;

【2】字符串的共享使用----》【字符串的常量池】
字符串常量池:程序中【直接写上双引号的字符串,其实就是在字符串常量池中】;
【特别注意】new 出来的不在字符串常量池中;
对于基本数据类型的比较:是进行【数值的比较】
对于引用数据类型的比较:是进行【地址值的比较】
int a = 1;
int b = 2;
System.out.println(a == b);//基本数据类型,是数值的比较
String str1 = “aaa”;//引用数据类型
String str2 = “bbb”;
System.out.println(str1 == str2);//引用数据类型其实地址值的比较
字符串常量池是在堆当中的heap中,字符串相当一个char[]数组,底层是byte[]字节数组;
【字符串常量中其实存储的是【字节数组的地址值】底层是byte[]字节数组的地址值
【3】因为字符串=比较的是两个字符串的地址值,如果想要进行字符串内容的比较,可以使用:equals(obj)或equalsIgnoreCase(obj)方法;
【a】public boolean equals(Object obj);
//参数可以是对象,【只有参数是字符串并且内容相同才会为true,否则为false】
【注意事项】:
1、【任何对象都能用Object进行接收】
2、equals方法具有对称性,也就是a.equals(b)和b.equals(a)效果是一样的;
3、如果比较双方一个常量和一个变量,推荐把常量字符串写在前面
String str5 = “aaa”;
System.out.println(“aaa”.equals(str5));//推荐使用
System.out.println(str5.equals(“aaa”));
如果当 String str6 = null;
System.out.println(“aaa”.equals(str6));//推荐使用 false
System.out.println(str6.equals(“aaa”));//不推荐,报错,空指针异常
【b】public boolean equalsIgnoreCase(String str);//忽略大小写,进行内容的比较
【注意】只有英文字母区分大小写,其他都不区分大小写
【4】String当中与获取相关的常用方法:
【a】public int length();
获取字符串当中含有的字符个数,拿到字符串的长度
【b】public String concat(String str);
将当前字符串和参数字符串拼接成为返回值【新的字符串】
【c】public char charAt(int index);
获取指定索引位置的单个字符,索引值从0开始
【d】public int indexof(String str);
查找参数字符串在本来字符串当中首次出现的索引位置
如果【没有返回-1值】
【5】字符串的截取方法:
【a】public String subString(int index);
截取从参数位置一直到字符串末尾,返回新的字符串
【b】public String subString(int begin,int end);
截取从begin开始,一直到end结束,获取中间的字符串
【注意】:[begin,end)左开右闭
String strA = “hello”;//存储的是一个hello字节数组的地址值
System.out.println(strA);
strA = “Java”;//存储的是一个Java字节数组的地址值
System.out.println(strA);
上面的这种写法,strA字符串的内容仍然是没有改变的
有两个字符串:“hello”,“Java”
strA当中保存的是地址值
本来的地址值是hello的0x666
现在变成了Java的0x999,【访问的地址值变化】
【6】字符串转换
【a】【重点常用方法】public char[] toCharArray();//将当前字符串拆分成为字符数组作为返回值
【b】public byte[] getBytes();//获取当前字符串底层的字节数组–》》IO流经常使用
【c】public String replace(CharSequence oldString,CharSequence newString);
将所有出现的老字符串替换成为新的字符串,返回替换之后的结果新字符串
【备注】:CharSequence接口,就是说可以接受字符串类型

String str1 = "how";
String str2 = str1.replace("o","*")
System.out.println(str1);//内容没有变
System.out.println(str2);//h*w

【7】字符串的分隔方法
【a】public String[] split(String regex);按照参数的规则,将字符串切分成为若干部分
【split方法的参数其实是一个正则表达式,《正则表达式》,
如果按照应为句点【.】,进行切分,必须写\–》两个反斜杠进行转义】
英文句点.在正则表达式有特殊含义【现阶段在使用时注意】
今天需要记忆的格式很多,还有很多知识点没总结和学习,String类中方法要多加练习巩固;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值