五、java数据类型之String(字符串)

CreateTime--2017年7月21日16:17:45

Author:Marydon

  (一)数据格式

  (二)初始化

// 方式一
String str;// 先声明,后赋值
// 执行其他代码
str = "赋值";
// 方式二:声明+赋空值(通常使用)
String str2 = "";
// 方式三:声明并赋需要的值(一步到位)
String str3 = "实际值"; 

  (三)常用操作

    5.3.1 split("指定字符")  

    语法:

      String.split("指定字符"),指定字符如果是特殊字符串需要使用"\\"转义        

    定义:

      拆分字符串

    示例:

String cookieStr = "userId$1|userName$%E8%B6%85%E7%BA%A7%E7%AE%A1%E7%90%86%E5%91%98|home$index|";
if (cookieStr.indexOf("userId") > -1) {
String[] cooks = cookieStr.split("\\|");
for (String cook : cooks) {
String[] str = cook.split("\\$");//或[$]
if (str[0].equals("userId")) {
return str[1];
}
}
}

    5.3.2 trim()

    定义:去除字符串左右空格(中间的空格无法去除)

    5.3.3 startsWith("指定字符、字符串")和endsWith("指定字符、字符串")

    定义:判断字符串是否以指定字符串开头(前缀prefix)和结尾(后缀suffix),返回true或false

    5.3.4 substring(startIndex,endIndex)

    定义:截取字符串,截取位置[startIndex,endIndex)

    UpdateTime--2017年8月17日08:12:35

    5.3.5 indexOf(str)

    定义:返回已知字符串str在指定字符串中第一次出现的元素下标索引号,如果不存在,返回-1

    5.3.6 lastIndexOf(str)

    定义:返回已知字符串str在指定字符串中第一次出现的元素下标索引号,如果不存在,返回-1

    5.3.7 trim()

    定义:去除字符串前后空格

    5.3.8 length()

    定义:返回字符串的长度

    UpdateTime--2017年8月23日17:24:39

    5.3.9 replace(param1,param2)

    定义:将字符串中的部分字符串param1全部替换成param2

    语法1:

      replace(CharSequence target,CharSequence replacement)

    说明:传的参数是字符串String

    语法2:

      replace(char oldChar, char newChar)

    说明:传的参数是单字符char

    小结:replace()方法传的参数可以是字符串String,也可以是单字符char

    UpdateTime--2017年11月10日08:31:01

    5.3.10 equals()

    定义:判断两个字符串的值是否相等

    语法:str1.equals(str2),相等返回true,否则返回false

    5.3.11 isEmpty()

    定义:判断该字符串是否为空,即是否==""

    语法:str.isEmpty(),如果为空返回true,否则返回false

    说明:

      1.str必须是字符串,不能为null,如果是null,调用isEmpty()方法会抛出空指针异常;

      2.非空校验,该方法存在弊端,可以使用5.2.1重新封装的方法,也可以调用apache的StringUtils.isEmpty()方法,举例说明。

      StringUtils.isEmpty()用法举例

      需要导入:

import org.apache.commons.lang.StringUtils;        
public static void main(String[] args) {
// 非空校验
Map<String, String> paramMap = new HashMap<String, String>();
// boolean res = paramMap.get("aa").isEmpty();会造成空指针
boolean res = StringUtils.isEmpty(paramMap.get("aa"));
// 相当于
res = (null == paramMap.get("aa") || paramMap.get("aa").equals(""));
System.out.println(res);

  (四)其它用法

  (五)格式转换

    5.5.1 String 与 int的相互转化

      5.5.1.1 String-->int

/**
* 将String类型的数字转换成int类型
*/
int r1 = Integer.parseInt("123");

      5.5.1.2 int-->String

/**
* int转String
*/
//使用String类的valueOf()方法
String str1 = String.valueOf(3);
//使用Integer类的toString()方法
String str2 = Integer.toString(3);
//拼接空字符
String str3 = 3 + "";

    5.5.2 String 与 Integer的相互转化

      5.5.2.1 String-->Integer

/**
* 将String类型的数字转换成Integer类型
*/
Integer r2 = Integer.valueOf("123");

      5.5.2.2 Integer-->String

/**
* Integer转String
*/
Integer r = 1;
String str4 = r.toString();

    5.5.3 String类型转换成八种基本数据类型

// 调用对应封装类的pase+“基本数据类型”
long l3 = Long.parseLong("123");

    5.5.4 String类型转换成八种基本数据类型的封装类

// 调用对应封装类的valueOf()方法
Long L3 = Long.valueOf("123");

    UpdateTime--2017年9月7日16:33:06 

    5.5.5 String转char

    方法:str.toCharArray()

    定义:将字符串转换成char数组

// 字符串转char数组
char [] chars = str.toCharArray();

    5.5.6 String转byte

    方法:str.toCharArray()

    定义:将字符串转换成byte数组

// 字符串转字节数组
byte [] bytes = str.getBytes();

  (六)进一步封装

    5.6.1 非空校验

    方式一:使用org.apache.commons.lang.StringUtils;

    方式二:自定义封装

    重新对String的isEmpty()方法进行封装,这种方法可以避免空指针异常。(对String类的扩展)

/**
* 校验是否为空(null && "")
*/
public static boolean isEmpty(String val) {
boolean flag = false;
if (val == null || "".equals(val)) {
flag = true;
}
return flag;
} /**
* 校验是否不为空(null && "")
*/
public static boolean isNotEmpty(String val) {
return !isEmpty(val);
}

  20200323

  object类型转String时,可能会存在空指针的情况,所以,为了避免这种情况的发生,不能使用String.toString()。

  两种解决方案:强制转换或者String.valueOf()

JSONObject json = new JSONObject();
// 方式一
System.out.println(String.valueOf(json.get("controls")));
// 方式二
System.out.println((String) json.get("controls"));
// 报错:空指针异常
System.out.println(json.get("controls").toString());

    

相关推荐:

 

java String字符串的更多相关文章

  1. Java String字符串/==和equals区别,str。toCharAt(),getBytes,indexOf过滤存在字符,trim()/String与StringBuffer多线程安全/StringBuilder单线程—— 14.0

    课程概要 String 字符串 String字符串常用方法 StringBuffer StringBuilder String字符串: 1.实例化String对象 直接赋值  String str=& ...

  2. Java String 字符串操作小结

    // 转载加编辑 -- 21 Apr 2014 1. Java字符串中子串的查找 Java中字符串中子串的查找共有四种方法,如下: 1.int indexOf(String str) :返回第一次出现 ...

  3. java String字符串——进度1

    String字符串    在JAVA中提供了多种创建字符串对象的方法,这里介绍最简单的两种,    第一种是直接赋值,    第二种是使用String类的构造方法:    如下所示:    Strin ...

  4. Java String字符串深入详解

    Java中字符串对象创建有两种形式,一种为字面量形式,如String str = "hello";,另一种就是使用new这种标准的构造对象的方法,如String str = new ...

  5. Java String 字符串类细节探秘

    一. 字符串基本知识要点 字符串类型String是Java中最常用的引用类型.我们在使用Java字符串的时候,通常会采用两种初始化的方式:1. String str = "Hello Wor ...

  6. Java String字符串补0或空格

    package cn.com.songjy; import java.text.NumberFormat; //Java 中给数字左边补0 public class NumberFormatTest  ...

  7. android TextView字体设置最少占多少行. 及其 Java String 字符串操作 . .

    ①  字体设置: 修改代码 :  GridViewActivity.java priceTv为 TextView priceTv.setMaxLines(3); //当多与7个字fu的时候 , 其余字 ...

  8. java String字符串操作 字符串加密等

    子串加密 1,设计思想 (1)输入一个字符串 (2)通过toCharArray()的方法将字符串转换成字符数组 (3)新建一个字符数组用来存储修改后的字符数组 2,程序流程图 3,源代码 packag ...

  9. Java String字符串的不可变

    Java 通过把String类设计为final使类不可继承,将变量value设置为private并且是final的,且value没有setter方法,不可修改. 为什么这么设计: 1.字符串常量池的需 ...

随机推荐

  1. HEVC 实时编码720P不是梦!

    最近很少光顾我的博客, 因为一直很忙! 目前我的HEVC在i5机子上720P编码速度单核达到2~3帧每秒! 多核的话离线实时编码已经不是问题! 现在问题是在线实时编码还差那么一点! 在容忍一定低延迟下 ...

  2. QDAC

    QDAC GITHUB: svn://www.qdac.cc/QDAC3 包括QMsgPack\QJson\QWoker...等序列和事件调度控件.

  3. objective-c block 详解 转

    Block   Apple 在C, Objective-C, C++加上Block這個延申用法.目前只有Mac 10.6 和iOS 4有支援.Block是由一堆可執行的程式組成,也可以稱做沒有名字的F ...

  4. DevExpress SpreadSheet报表模板设置 z

    DevExpres SpreadSheetControl报表模板设置,这一个还是挺牛逼的,字段绑定直接在单元格里面设置公式(=Field("字段名")),当然直接拖更方便, 跟xt ...

  5. JAVA nio 2 和 Path 类简介

    想要初步了解 NIO.2 API,也就是通常所说的“JSR203: More New I/O APIs for the Java Platform”,最好的切入点就是新的抽象类 java.nio.fi ...

  6. [翻译] FlatUIKit

    FlatUIKit FlatUIKit is a collection of iOS components styled with the "Flat UI" aesthetic ...

  7. RecyclerView 缓存机制详解

    一 前言 RecyclerView据官方的介绍,该控件用于在有限的窗口中展示大量数据集,其实这样功能的控件我们并不陌生,例如:ListView.GridView.RecyclerView可以用来代替传 ...

  8. 深度学习研究组Deep Learning Research Groups

    Deep Learning Research Groups Some labs and research groups that are actively working on deep learni ...

  9. CF 327B. Hungry Sequence

    B. Hungry Sequence time limit per test 1 second memory limit per test 256 megabytes input standard i ...

  10. Android数据适配-ExpandableListView

    Android中ListView的用法基本上学的时候都会使用,其中可以使用ArrayAdapter,SimpleAdapter,BaseAdapter去实现,这次主要使用的ExpandableList ...