原文链接:String的定义及常用方法

文章目录

  • 定义字符串的三种方式
    • 方式一
    • 方式二
    • 方式三
  • 常见的String方法
    • 1.严格大小写.equals()
    • 2.忽略大小写.equalsIgnoreCase
    • 3.字符串长度.length
    • 4.小写字母转成大写字母.toUpperCase
    • 5.大写字母转小写.toLowerCase
    • 6.判断字符串是否在另一个字符串中
    • 7.去掉首位空格和末尾空格 .trim
    • 8.截取字符串.substring
    • 9.拆分字符串、返回数组!.split/stringtoknizer
    • 10.根据所给位置找到字母.charAt();
    • 11.替换字符单个,或者多个.replace();
  • String常量池
    • 正常赋值创建String
    • 通过new 创建String
    • 在堆中开辟空间产生对象
    • 总结:
  • StringBuffer:String的增强版
    • 常用方法
    • String->StringBuffer
    • StringBuffer->String
    • 常见方法Date<->String

定义字符串的三种方式

方式一

String string = "abc";

方式二

String string = new String("abc");

方式三

String string = new String();//值为""
---------------
static String st1;//值为unll

对于非基本类型(对象类型|引用类型)

1.只定义,不new(实例化) ,默认值都是null,

例:Person per;/String s3;

2.new(实例化)后值:

只要实例化值就不为null

内部属性的值 目前 全部是数据类型的默认值

String s3 = new String() ;  值 s3:""
Person per = new Person(); per :name是null  age是0(String name,int age)

常见的String方法

1.严格大小写.equals()

String str = "helloworld" ;
boolean flag = str.equals("helloworld");
System.out.println(flag);//true

2.忽略大小写.equalsIgnoreCase

String str = "helloworld" ;
boolean flag =str.equalsIgnoreCase("helloWorld") ;
System.out.println(flag);//true

3.字符串长度.length

String str  = "woaini";
int len = str.length();
System.out.println(len);//6

4.小写字母转成大写字母.toUpperCase

String str  = "woaini";
str = str.toUpperCase();
System.out.println(str);//WOAINI

5.大写字母转小写.toLowerCase

String str  = "woaini";
str = str.toLowerCase();
System.out.println(str);//woaini

6.判断字符串是否在另一个字符串中

IndexOf

(如果存在,则返回位置,不存在,返回-1;)

 String str = "helloworld" ;
//从前往后找
int position =  str.IndexOf("owo") ;
//从后往前找
int position =  str.lastIndexOf("owo") ;System.out.println(position);//4

7.去掉首位空格和末尾空格 .trim

不去中间空格

 String str = "  helloworld  " ;
System.out.println("去空格之前的长度"+str.length());//14
str = str.trim();
System.out.println("去首位空格的长度"+str.length());//10

8.截取字符串.substring

(数字)左闭右开,[) 左面能取到,右面取不到

1.两个数字,从a截取到b

2.一个数字从a 截取到末尾!

String phone = "19920124443";
phone = phone.substring(2,6);
System.out.println(phone);//9201

9.拆分字符串、返回数组!.split/stringtoknizer

String phone ="029-12345678";
//根据-来前后分割
String[] ps  = phone.split("-");
System.out.println(ps[0]);//029
System.out.println(ps[1]);//12345678
//特殊符号分割需要加转义符/特殊字符。| \ $ + ,加转义符变
String phone ="029.12345678";
//根据-来前后分割
String[] ps  = phone.split("//.");
System.out.println(ps[0]);//029
System.out.println(ps[1]);//12345678
String str = "hello|world";
//有参,1.数组名2.分隔符
StringTokenizer token = new StringTokenizer(str,"|");
//token指向上一个元素token.hasMoreElements()判断是否有下一个元素/
//如果有,a:true  b:直、指向下一个元素
while(token.hasMoreElements()){//nextElement()取出当前元素
System.out.println(token.nextElement());
}

10.根据所给位置找到字母.charAt();

String str = "helloword" ;
System.out.println(  str.charAt(2));//l

11.替换字符单个,或者多个.replace();

String str = "helloword" ;
str = str.replace("h","y") ;System.out.println(str);//yelloword
str = str.replcae("ll","ss");System.out.println(str);//yessoword

String常量池

正常赋值创建String

使用字符串时,先在常量池中寻找,如果有,则使用;如果无,则创建后放入常量池,并使用

String str1 = "hello";
String str2 = "hello";
System.out.println(str1 == str2);//true

通过new 创建String

String str1 = new String("hello");
String str2 = new String("hello");
System.out.println(str1==str4);//false

JVM

堆:放基本类型和引用类型

栈:对象的实例

在堆中开辟空间产生对象

试题1.

String str = new String("hello");

上面一句话创建了多少对象?

答:如果之前常量池中不存在hello,则产生了2个对象+1个引用

如果常量池中存在hello,则产生了一个对象(堆中的)+1个引用

2个情况:如果之前不存在hello先在常量池创建一个hello字符串,堆中创建块,栈中引用堆;

试题2.

Sting str = new String("a"+"b");

初始:常量池为空

产生了多少对象?(暂时不考虑引用类型)

答:4个(常量池中3个{a,b,ab},堆中1个)+1个引用

试题3.

String str = new String("ABC")+"abc";

初始:常量池为空

产生了多少对象?

答:3个+1个引用

总结:

字符串,如果直接使用字面量String str = “abc”; ,则从常量池中找

如果使用的是new ,则从堆中找(而堆又会从常量池中找)

常量池中不存在,则创建,并引用该常量池中的字符串(使用常量池中的内存地址)

如果new 之后仍然想从常量池中获取,不通过堆的方式该怎么办?

使用inter()方法

String str1 = "hello";
String str2 = new String("hello");
System.out.println(str1==str2);//false
//----------------------------------------
String str1 = "hello";
String str2 = new String("hello");
str2 = str2.inter();//String中的intern()方法,可以让引用直接指向常量池
System.out.println(str1==str2);//true

StringBuffer:String的增强版

比String最大的升级,可以在原来的内存空间中直接修改变量值

常用方法

 StringBuffer sb = new StringBuffer("abc");sb.append("aaa") ;//追加     可以接收也可以不接收   abcaaasb.insert(2,"ww");//插入  插入位置,插入单词     abwwcaaasb.reverse();//逆序                          aaacwwbaSystem.out.println(sb);

String、tringBuffer各自独立,相互转换

String->StringBuffer

String str = "asd";
StringBuffer sb = new StringBuffer(str) ;
System.out.println(sb);

StringBuffer->String

方法一

StringBuffer sb = new StringBuffer("sssa") ;
String sb = sb.toString();
System.out.println(sb);

方法二

StringBuffer sb = new StringBuffer("sds") ;
String as = sb + "";//任何类型遇字符串都会转换成字符串
System.out.println(as);

常见方法Date<->String

Date date = new Date();
System.out.println(date);//Date<->String用SimpleDateFormat方法//想要输出的日期格式通过构造方法的函数进行实现//YYYY-MM-ddSimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-dd") ;String dataStr = sdf.format(date) ;System.out.println(dataStr);

String的定义及常用方法相关推荐

  1. Jquery- 错误消息Date未定义,String未定义

    在jquery的高版本(1.7-1.9)提示"String"未定义,稍低版本提示"Date"未定义错误 解决办法: 1.找到你发生错误的代码(即执行那条代码时发 ...

  2. 实验5.4 编程实现两字符串的连接(使用string类定义字符串对象)

    题目 使用string类定义字符串对象,实现两字符串的连接. AC的C++代码如下: #include<iostream> #include<string> using nam ...

  3. JavaScript数组的定义及常用方法

    目录 前言 一.数组是什么? 二.数组的定义方式 1.字面量方法 2.构造函数创建 三.数组常用方法 1.push:在数组最后一位添加方法,可添加多个 2.pop:把数组的最后一位剪切(传参无效) 3 ...

  4. java中的string类和ArrayList常用方法

    Java中String类和ArrayList集合常用方法 String类常用方法 获取字符串的长度 方法很简单,很多数组都是使用这个方法来遍历数组中的元素,直接上代码: //获取字符串的长度 publ ...

  5. 字符串的定义和常用方法

    文章目录 前言 一.概念 二.关键性质 三.String == null和""的区别 四.常用方法 一.object to string 二.字符串拼接 三.判断字符串是否为&qu ...

  6. JAVA对象转为Java String的几种常用方法

    在java项目的实际开发和应用中,常常需要用到将对象转为String这一基本功能.本文将对常用的转换方法进行一个总结.常用的方法有Object#toString(),(String)要转换的对象,St ...

  7. java的字符定义_Java字符串定义及常用方法

    String.StringBuffer和StringBuilder String修饰的是不可变的字符串,而StringBuffer和StringBuilder类的对象是可以被修改的. StringBu ...

  8. Random类、String类的一些常用方法

    一.Random类 1.作用:生成随机的整数 2.如何使用? 2.1创建Random对象------调nextInt( bound: )方法--------->用整数类型变量接收 二.Strin ...

  9. java中string的方法_java中String类中的常用方法

    @Test public void testToString2() {  /**   * 他会调用toString方法 他调用的其实是Object类中的toString方法 引用会隐式调用toStri ...

最新文章

  1. python如何编程-编程零基础应当如何开始学习 Python?
  2. PHP内核探索:Zend引擎
  3. python类继承的重写和super
  4. jQuery easyUI--下拉菜单的制作
  5. offset系列,client系列,scroll系列回顾
  6. 在google map上显示Instagram的照片
  7. 小米4刷CM13系统
  8. android 菜单隐藏了,隐藏一些导航菜单菜单项 – Android
  9. mysql 列转置_MySQL行列转置方法
  10. 2018-2019-1 20165318 20165326 实验五 通讯协议设计
  11. 解决移动浏览器不能正确转化时间
  12. 计算机上网记录怎么清除,win7系统彻底清除上网记录的详细方法
  13. 字节跳动CEO梁汝波接棒张一鸣一年:使命是我们前进的动力
  14. 象棋( Xiangqi, ACM/ICPC Fuzhou 2011, UVa1589)
  15. java 查询微信支付订单
  16. H5能取代移动app(Android和iOS)吗?
  17. fiddler抓包小红书app(简易版)
  18. Python3-基础语法
  19. Eclipse 导入maven项目报 Unknown Faceted Project Problem (Java Version Mismatch) 问题解决
  20. DCT 变换(几个简单的MATLAB的例子)

热门文章

  1. tomcat启动时中文乱码
  2. 【C++常用函数】取绝对值abs()
  3. java就业前景很好:四大就业方向可供选择
  4. 上海交通大学安泰经济与管理学院:大疫当前谈供应链思维
  5. 电脑维护与优化:延长战友的寿命
  6. ios短信验证码自动填充两次,且输入框的值为空。
  7. 可以录音并将语音转文字助力高效办公的便签APP推荐
  8. 电子贸易企业销售收款核销管理常见问题及解决方法
  9. #pragma用法大全
  10. 【基础①】python入门之环境搭建与输入输出