当前位置: 首页 > news >正文

黑马程序员_String类

--------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流! --------------------


1. String类

1.概述

String是一个特殊的类,一旦被初始化,那么就不能被改变,String类是一个被final修饰的类。

2.String的初始化

String s1=”abc”;这个表示的是一个对象,但是不是在内存中创建的,而是在内存的缓冲区(常量池)中创建了一个“abc”对象,只有通过new关键字创建的,才在堆中申请了内存空间,并且在栈中有声明的变量名称。

当有Strings1=”abc”,String s2=”abc”;都执行的话,当执行了s1后,会在内存的缓冲区(常量池)中创建了”abc”字符串对象,然后在执行s2的时候,那么先去内存缓冲区查找,要是存在了,那么就直接指向此对象,直接使用,所以,这两句话也就纯创建了一个”abc”字符串。

String str=new String(“xyz”);这是创建了两个对象,一个是先在内存中通过new创建了一个对象,然后在内存缓冲区中又创建了一个字符串“xyz”,然后在内存中的指向了内存缓冲区(常量池)中的对象。

在常量池中只有一个相等的字符串,但是在内存中可以有多个相等的字符串。



3.一道面试题

String str=new String(“xyz”);此语句产生几个对象,

如果常量池中已经有“xyz”字符串的话,那么就产生一个对象,要是常量池中没有”xyz”,那么就产生两个对象,一个是咋内存中,一个是在常量池中(内存缓冲区)

2. 字符串比较

有两种比较方法:==和equals。

==:比较的是内存地址,equals比较的内容

  public class Text {
  public static void main(String[] args) {
    String s1 = "abc";
    String s2 = "abc";
    String str1 = new String("abc");
    String str2 = new String("abc");
    System.out.println(s1 == s2);// true 地址相等
    System.out.println(s1.equals(s2));// true 内容相同
    System.out.println(str1 == str2);// false 地址不相等
    System.out.println(str1.equals(str2));// true 内容相同
    System.out.println(s1 == str2);// false 地址不相等
    System.out.println(s1.equals(str2));// true 内容相同
  }
}
 

3. 获取

下面举了一些常用的方法,这些方法还有很多重载的,小想查看全面的,请查看API文档 java.lang.String包,里面方法很全

public class getString {
  public static void main(String[] args) {
    String str = "abcdasdfgh";
    // 获取长度
    System.out.println(str.length());
    // 通过位置获取字符
    System.out.println(str.charAt(3));
 
    // 通过字符获取位置
    System.out.println(str.indexOf('d'));// 从首位置开始查找,第一个字符d
    System.out.println(str.indexOf('d', 5));// 从位置5开始查找,遇到的第一个字符d
    // 获取子字符串的位置
    System.out.println(str.indexOf("asd"));// 获取字符串asd在str中的位置
  }
 
}
结果:
10
d
3
6
4


4. 判断

下面举了一些常用的判断方法,还有很多重载和其他的方法都不一一举例了,有疑问参考API文档

public class judgeString {
  public static void main(String[] agrs) {
    String str = "zhangsan.java";
    // 判断字符串是否为空
    System.out.println(str.isEmpty());// false
    // 判断字符串是否包含某内容
    System.out.println(str.contains("."));// true
    // 判断字符串是否是以指定前缀开始
    System.out.println(str.startsWith("zhang"));// true
    // 判断字符串是否是以指定后缀结束
    System.out.println(str.endsWith(".java"));// true
  }
}
 


5. 转换

1.将字符数组转换成字符串

构造函数:String(char [] values); String(char []values,start,end);将一部分字符数组转换成字符串

Static String copyValuesof(char [] );

2.将字符串转换成字符数组

toChatArray();

3.将字节数组转换成字符换

String(byte [] ); String(byte []values,start,end);

4.将字符串转换成字节数组

getBytes();

5.将基本数据类型转换成字符串

valuesOf(int a);

public class ZhuanString {
  public static void main(String[] args) {
    String str="abcdef";
        char [] cs={'h','e','l','l','o'};
        //将字符串转换成字符数组
         char [] newcs=str.toCharArray();
        //将字符数组转换成字符串
         System.out.println(new String(cs));
         //将字符串转换成字节数组
         byte [] bs=str.getBytes();
         //将字节数组转换成字符串
         System.out.println(new String(bs));
         //将基本数据类型转换成字符串
         System.out.println(String.valueOf(4));
  }
 
}


6. 分割,替换,截取

 public class Text {
  public static void main(String[] args) {
    String str="zhangsan,lisi,wangwu";
    //分割
    String [] ss=str.split(",");
    for(String t:ss)
      System.out.print(t+" ");
    //替换
    String s=str.replace('w', 'y');
    String s1=str.replace("zhangsan", "sa");
    //截取
    String s3=str.substring(4);
    String s4=str.substring(2,8);
   
    System.out.println("\ns="+s);
    System.out.println("s1="+s1);
    System.out.println("s3="+s3);
    System.out.println("s4="+s4);
  }
}
 
结果:
 
zhangsanlisi wangwu
s=zhangsan,lisi,yangyu
s1=sa,lisi,wangwu
s3=gsan,lisi,wangwu
s4=angsan

7.去除空格,大小写转换,比较

 public class Text {
  public static void main(String[] args) {
    String str="  abc ";
    //取出两边空格
    String  s1=str.trim();
    //大小写转换
    String s2=s1.toUpperCase();//转换成大写
    String s3=s2.toLowerCase();//转换成小写
    //比较
     
    System.out.println("s1="+s1);
    System.out.println("s2="+s2);
    System.out.println("s3="+s3);
      System.out.println(s2+"和"+s3+"比较大小="+s2.compareTo(s3));
      //比较的时候是根据字符的ASCII进行的比较
      //小于0表示s2小于s2 
      //等于0  表示s2和s3相等  
      //大于0  表示s2比s3大  
  }
}
结果:
s1=abc
s2=ABC
s3=abc
ABC和abc比较大小=-32
 


-------------------- ASP.Net+Android+IOS开发、 .Net培训、期待与您交流! --------------------

相关文章:

  • 洪水预报系统的读书笔记
  • android 关于闹钟
  • CSS中首字母大写怎么实现?
  • android环境下解决java.io.IOException: Malformed ipv6异常的方法
  • Scatter“秒传”的速度秒杀了云存储
  • 腾讯移动游戏平台发布了《天天酷跑》游戏
  • 黑马程序员_String练习
  • android下基本json串的生成与解析
  • FileZilla无法连接ftp服务器的解决方案
  • nginx编译安装报错src/os/unix/ngx_files.c: In function 鈔gx_write_chain_to_file?
  • WiFi基本知识
  • nginx配置DocumentRoot
  • 黑马程序员_StringBuffer,包装类
  • 【Android病毒分析报告】 - ZooTiger “集恶意推广、隐私窃取、恶意吸费于一体”...
  • windows下如何用wireshark抓本地回路抓包
  • CSS盒模型深入
  •  D - 粉碎叛乱F - 其他起义
  • Debian下无root权限使用Python访问Oracle
  • isset在php5.6-和php7.0+的一些差异
  • leetcode388. Longest Absolute File Path
  • nodejs实现webservice问题总结
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • Python3爬取英雄联盟英雄皮肤大图
  • sublime配置文件
  • 阿里云Kubernetes容器服务上体验Knative
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 简单数学运算程序(不定期更新)
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 一文看透浏览器架构
  • 用quicker-worker.js轻松跑一个大数据遍历
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • Java性能优化之JVM GC(垃圾回收机制)
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (3)STL算法之搜索
  • (C++)八皇后问题
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (二)hibernate配置管理
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (接口封装)
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (转)C#调用WebService 基础
  • (转)ORM
  • .NET Core Web APi类库如何内嵌运行?
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • /*在DataTable中更新、删除数据*/
  • @GetMapping和@RequestMapping的区别
  • @拔赤:Web前端开发十日谈
  • [ vulhub漏洞复现篇 ] Celery <4.0 Redis未授权访问+Pickle反序列化利用
  • []AT 指令 收发短信和GPRS上网 SIM508/548