String的定义及常用方法
原文链接: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的定义及常用方法相关推荐
- Jquery- 错误消息Date未定义,String未定义
在jquery的高版本(1.7-1.9)提示"String"未定义,稍低版本提示"Date"未定义错误 解决办法: 1.找到你发生错误的代码(即执行那条代码时发 ...
- 实验5.4 编程实现两字符串的连接(使用string类定义字符串对象)
题目 使用string类定义字符串对象,实现两字符串的连接. AC的C++代码如下: #include<iostream> #include<string> using nam ...
- JavaScript数组的定义及常用方法
目录 前言 一.数组是什么? 二.数组的定义方式 1.字面量方法 2.构造函数创建 三.数组常用方法 1.push:在数组最后一位添加方法,可添加多个 2.pop:把数组的最后一位剪切(传参无效) 3 ...
- java中的string类和ArrayList常用方法
Java中String类和ArrayList集合常用方法 String类常用方法 获取字符串的长度 方法很简单,很多数组都是使用这个方法来遍历数组中的元素,直接上代码: //获取字符串的长度 publ ...
- 字符串的定义和常用方法
文章目录 前言 一.概念 二.关键性质 三.String == null和""的区别 四.常用方法 一.object to string 二.字符串拼接 三.判断字符串是否为&qu ...
- JAVA对象转为Java String的几种常用方法
在java项目的实际开发和应用中,常常需要用到将对象转为String这一基本功能.本文将对常用的转换方法进行一个总结.常用的方法有Object#toString(),(String)要转换的对象,St ...
- java的字符定义_Java字符串定义及常用方法
String.StringBuffer和StringBuilder String修饰的是不可变的字符串,而StringBuffer和StringBuilder类的对象是可以被修改的. StringBu ...
- Random类、String类的一些常用方法
一.Random类 1.作用:生成随机的整数 2.如何使用? 2.1创建Random对象------调nextInt( bound: )方法--------->用整数类型变量接收 二.Strin ...
- java中string的方法_java中String类中的常用方法
@Test public void testToString2() { /** * 他会调用toString方法 他调用的其实是Object类中的toString方法 引用会隐式调用toStri ...
最新文章
- python如何编程-编程零基础应当如何开始学习 Python?
- PHP内核探索:Zend引擎
- python类继承的重写和super
- jQuery easyUI--下拉菜单的制作
- offset系列,client系列,scroll系列回顾
- 在google map上显示Instagram的照片
- 小米4刷CM13系统
- android 菜单隐藏了,隐藏一些导航菜单菜单项 – Android
- mysql 列转置_MySQL行列转置方法
- 2018-2019-1 20165318 20165326 实验五 通讯协议设计
- 解决移动浏览器不能正确转化时间
- 计算机上网记录怎么清除,win7系统彻底清除上网记录的详细方法
- 字节跳动CEO梁汝波接棒张一鸣一年:使命是我们前进的动力
- 象棋( Xiangqi, ACM/ICPC Fuzhou 2011, UVa1589)
- java 查询微信支付订单
- H5能取代移动app(Android和iOS)吗?
- fiddler抓包小红书app(简易版)
- Python3-基础语法
- Eclipse 导入maven项目报 Unknown Faceted Project Problem (Java Version Mismatch) 问题解决
- DCT 变换(几个简单的MATLAB的例子)