今天正好学校那边的任务不多,我就打算把Stirng 的有关知识点都总结在一起了,这样有利于知识的系统性,要不然学多了就会越来越杂,最主要的是总会忘记,记忆的时间太短了,通过这种方式,把它归纳在一起,写一下博客,这样我认为会好一点,也可以帮助有需要的人,一举两得,嘻嘻,废话不多说继续干,奥里给。

首先咱们从最开始的源头来说,刚开始接触JAVA的时候,我们学过java的基本的数据类型

  • [ 1 ] 基本类型
  1. 数值类型

  2. boolean

  • [ 2 ] 引用类型

引用类型-->引用
那么好,我们就先说说引用数据类型,先了解一下,JAVA一个有四种引用类型分别是类类型,接口类型,数组类型,枚举类型

1.String 可以通过new和构造方法来创建一个对象,用s来引用它(也就是相当于把asdf这个字符串赋值给s

String s = new String("asdf");

那么什么是引用呢?打个比方:就好比是你的学号,那么对象就是你,那就需要你(对象)来找到的学号,那怎吗可以找到你的学号呢?就需要学号来引用你(对象),那么你就可以知道你的学号是什么了,这个比方就可以解释什么是引用了

2.String(字符串)可以和数字相互转换

  • [1] 字符串转换成数字(三种)(前提是数字型)
String a = "123";
int num1 = Integer.parselnt(a);
Integer num2 = Integer.valuOf(a);
Integer num3 = new Integer(a);
  • [2] 数字转换成字符串
int a = 10;
String s = Integer.toString(a);
String s1 = String.valueOf(a);
String s2 = " " + a;

3.字符串中String类和StringBuffer类(StringBuilder类)

  • [1] String 对象是不可变的,他的内容是不可以变得
String s = "JAVA";
Stystem.out.println("s= " + s);
S = "Html";
System.out.println("s = " + s);

输出结果:

s=JAVA

s=Html

新手有的小白一定会好奇,它的值不是改变了吗,但是为什么说它是不可的呢?这个第一天语句创建一个内容为JAVA的String对象,第二个是创建一个内容为Html类的对象 并将其引用赋值给s,赋值后第一个对象

仍然存在但是却不能进行访问了,因为s现在已经指向了一个新的对象,那么原来那个对象就会成为他的垃圾内存,在特定时刻的JAVA虚拟机中回收,但是它的值并没有改变 ,也就是例子中的s=“JAVA”他并没有改变,他只不过是在内存堆里面,所以说,String 是不可变的。

String s = "JAVA";,执行之后如下:

graph LR
S-->JAVA

String s = "Html";执行之后如下:

graph LR
S-->JAVA
graph LR
S-->Html
这里由于我技术水平的问题图我只能这样画但是其实它是指向下一个Html那个的,请大家谅解
  • [2] StringBuffer类和Stringbuilder类

    StringBuffer类/StringBuilder类要比Stirng要灵活,他们可以随意的插入,添加,或者追加新的内容,可以这么说,StringButter类和Sttringbuilder类基本是相同的,可以视为一致

修改StringBuilder常用的方法:

appand(char[])//追加一个字符数组到构造器中

reverse()//翻转构造器中的字符

setCharAt(o,'a')//将构造器中的索引值换做成字符型

我只说了其中的一小部分种的一小部分,也是很常用的,剩下的大家可以查阅API文档来看哒!

4.String类中to String()方法

  • [1] toString()方法在object类中定义的,其返回值是String类型
  • [2] 在进行String 类与其他类型的连接操作时,自动调用toString方法,demo如下;
Data now = new DateData();
System.out.println("now= " + now);//相当于下一行代码
System.out.println("now="+ now.toString());

在阅读javadoc时ToString()

是这样说的 The toString method for class Object return a string consisting of the name of the class of which theobject is an instance, the at-sign character `@', andthe unsigned hexadecimal representation of the hash code of theobject. In other words, this method returns a string equal to thevalue of:

getClass().getName() + '@' + Integer.toHexString(hashCode())

它的注释是这么说的,翻译过来大致意思就是:类对象这个方法返回一个字符串,这个字符串是一个实例,@字符和无符号十六进制的表示形式,也就是说此方法返回一个等于值的字符串

因为它是object类已经有的方法m,而所有的类都继承Object,所以"所有对象都有这个方法”,他就是为了方便输出,如果输出的不是String类型的话,系统就会自动调用toString()放法(其实他也就是起到个补充的作用

public class A{
public String toString(){
return"this is A";
}
public static void main(String[] args){
A obj = new A();
System.out.println(obj);
}
输出结果是:this is A
1.public class A{
public String getString(){
return"this is A";
}
public static void main(String[] args){
A obj = new A();
System.out.println(obj.getString());
}
输出结果是:A@279f2327 2.public class A{
public String getString(){
return"this is A";
}
public static void main(String[] args){
A obj = new A();
System.out.println(obj.toString());
}
}
输出:A@279f2327

由上面可以看出,后面两种情况都是会输出它的地址的,只有第一种情况是输出它本身,看到好处了吗?就是这个toString()方法只要遇到println等一些输出的方法时,他就会自动调用,自动会显示你上面输出的字符串。

5.String类型

常见的方法我简单的给你们说道说道,可能只是片面,又没说到的建议大家多多的去查阅API文档,差多了自然就记住了,就好比是背单词似的也是要一点一点地积累的

length()//返回字符串中的字符数

charAt(index)//返回字符串ss中指定位置的字符

tuUpperCase()//返回一个新的字符串,其中所有字母大写

toLoverCase()返回一个新的字符串,其中所有字母小写

concat(s1)//将本字符串和s1字符串连接起来返回一个新的字符串

给你们举个例子具体这些方法是怎么用的,因为总是有很多刚刚学还没入门的小伙伴,不会用,就是理论和实践不能很完全的结合。

String message = "welcome to JAVA!";
System.out.println("The length of " + message + "is"+ message.length());
输出结果:The length of welcome to JAVA! is 16

这只是代码中的一小部分,但却也是核心地方。

6.String类的静态format()方法

它和printf很是相似只不过printf是显示一个格式化字符串,而format()则是返回一个格式化字符串,这个就是二者的区别,这个还是很简单个,也很好理解我还是继续说一个例子吧!加深理解。

语法一:format(String format,object....args)

其中format为格式化字符串,args为由格式字符串中由格式说明符引用的参数,参数的数目是可变的,也可以为0.

转换符 说 明 示

%b、%B 格式化为布尔类型 false

%h、%H 格式化为散列码 A05A5198

%s、%S 格式化为字符串类型 "abc"

%c、%C 格式化为字符类型 'w'

%d 格式化为十进制数 26

%0 格式化为八进制整数 12

%x、%X 格式化为十六进制整数 4b 1

%e 格式化为用计算机科学计数法表示的十进制数

1.700000e+01

%a 格式化为带有效位数和指数的十六进制浮点值 0X1.C000000000001P4

%n 结果为特定于平台的行分隔符

%% 结果为字面值%

Sttring str = String.format("%d",400/2);
String str2 = String.format("b",3>5);
输出结果:
200
false

语法二:format(Loacate l,String format,Object...args)

该方法可以作为常用的日期和时间的格式转换符

下面这个表是我在书上看到的,所以记录了下来,也同时可以为大家作为参考。

表2 常见的日期和时间转换符

转换 说明 示 例

%te 一个月中的某一天(1〜31) 12

%tb 指定语言环境的月份简称 Jan (英文)、一月(中文)

%tB 指定语言环境的月份全称 February

(英文)、二月(中文)

%tA 指定语言环境的星期几全称 Monday (英文)、星期一(中文)

%ta 指定语言环境的星期几简称 Mon (英文)、星期一(中文)

%tc 包括全部日期和时间信息 星期三 十月 25 13:37:22 CST 2008

%tY 4位年份 2008

%tj 一年中的第几天(001〜366) 060

%tm 月份 05

%td 一个月中的第几天(01〜31) 07

%ty 两位年份 08

public  static void main(String[] args){
Date date new Date();//定义Data类对象
Locale dorm = Locale.Us;
String month = String.format(form,"%tY",date);//将当前年份初始格式化String data = String.format(form."%td",date);//将当前日期s初始化
System.out.println("今年是:" + year +);
System.out.println("今天是:" + date + "号");
}
运行结果:
今年是:2022年
现在是: April
今天是:17号
又是一个通宵终于把它总结完了,String 的知识点总结完了,说多倒也不多,但是说少他也不少啊,也有一些硬骨头得需要啃一会的对于小白来说
打个哈欠,满满的成就感,感觉看着电脑时间久了眼睛都花了 ,总结了好久,哈哈哈哈,都是一些干货,觉得好可以,或者对你有帮助,点个赞,鼓励我一下子哦!嘿嘿,希望可以帮助有需要的人,我们可以一起进步!!这个点写完了估计发不到首页了,等到明天早上的吧!明早在发布吧。明天继续加油!奥里给!你们也是哦

来说说Java中String 类的那些事情的更多相关文章

  1. Java中String类的方法及说明

    String : 字符串类型 一.      String sc_sub = new String(c,3,2);    //      String sb_copy = new String(sb) ...

  2. java中String类学习

    java中String类的相关操作如下: (1)初始化:例如,String s = “abc”; (2)length:返回字符串的长度. (3)charAT:字符操作,按照索引值获得字符串中的指定字符 ...

  3. 在java中String类为什么要设计成final

    在java中String类为什么要设计成final? - 胖胖的回答 - 知乎 https://www.zhihu.com/question/31345592/answer/114126087

  4. 【转载】Java中String类的方法及说明

    转载自:http://www.cnblogs.com/YSO1983/archive/2009/12/07/1618564.html String : 字符串类型 一.      String sc_ ...

  5. 在java中String类为什么要设计成final?

    大神链接:在java中String类为什么要设计成final? - 程序员 - 知乎 我进行了重新排版,并且更换了其中的一个例子,让我们更好理解. String很多实用的特性,比如说“不可变性”,是工 ...

  6. Java中String类为什么被设计为final?

    Java中String类为什么被设计为final   首先,String是引用类型,也就是每个字符串都是一个String实例.通过源码可以看到String底层维护了一个byte数组:private f ...

  7. java中String类、StringBuilder类和StringBuffer类详解

    本位转载自http://www.cnblogs.com/dolphin0520/p/3778589.html  版权声明如下: 作者:海子 出处:http://www.cnblogs.com/dolp ...

  8. java 中String类的常用方法总结,带你玩转String类。

    String类: String类在java.lang包中,java使用String类创建一个字符串变量,字符串变量属于对象.String类对象创建后不能修改,StringBuffer & St ...

  9. java中String类为什么不可变?

    在面试中经常遇到这样的问题:1.什么是不可变对象.不可变对象有什么好处.在什么情景下使用它,或者更具体一点,java的String类为什么要设置成不可变类型? 1.不可变对象,顾名思义就是创建后的对象 ...

随机推荐

  1. CF33C Wonderful Randomized Sum 题解

    原题链接 简要题意: 你可以无限次的把该数组的一个前缀和后缀 \(\times -1\),问最终的最大序列和. 这题盲目WA了数次才知道本质 这题89个数据吊打std CF真好啊,发现一个错后面就不测 ...

  2. VMware workstation 下Hadoop伪分布式模式安装

    详细过程: 1.VMware安装: 2.centos 6 安装 3.jdk下载安装配置 4.Hadoop 安装配置 1.VMware Workstation 安装: https://www.vmwar ...

  3. 强化学习之六:Deep Q-Network and Beyond

    本文是对Arthur Juliani在Medium平台发布的强化学习系列教程的个人中文翻译,该翻译是基于个人分享知识的目的进行的,欢迎交流!(This article is my personal t ...

  4. 解决python3使用cx_Freeze打包成exe后不能运行

    我使用的是python3.4,在使用cx_Freeze打包成exe后发现有些打包后程序能够运行,但是有些无法运行 这是控制台报错 经过多方查找发现原来是windows缺少一些python的扩展包 如下 ...

  5. Jmeter4.0接口测试之案例实战(七)

    在前面的知识体系中介绍了Jmeter的基本应用,下来通过具体的案例来看Jmeter在接口测试中的具体案例实战部分. HTTP是基于应用层的协议,底层的网络传输层它不需要去关心,同时它是一个无状态的协议 ...

  6. 分享个Class工具类

    import java.io.File; import java.io.FileFilter; import java.io.IOException; import java.net.JarURLCo ...

  7. Downgrade ASM DATABASE_COMPATIBILITY (from 11.2.0.4.0 to 11.2.0.0.0) on 12C CRS stack.

    使用Onecommand完成快速Oracle 12c RAC部署后 发现ASM database compatibilty无法设置,默认为11.2.0.4.0. 由于我们还有些数据库低于这个版本,所以 ...

  8. SpringBoot系列(二)入门知识

    SpringBoot系列(二)入门知识 往期推荐 SpringBoot系列(一)idea新建springboot项目 引言 本来新建springboot项目应该放在入门知识这一章的,但是由于新建spr ...

  9. SQL 实习

    一. tem表 group by 分组后,有三个编号,找出最下的订单时间,比较选出时间段内的数据.注意group by 和 having的用法. group by 的用法 不用聚合函数的时候,每类出现 ...

  10. ​结合异步模型,再次总结Netty多线程编码最佳实践

    更多技术分享可关注我 前言 本文重点总结Netty多线程的一些编码最佳实践和注意事项,并且顺便对Netty的线程调度模型,和异步模型做了一个汇总.原文:​​结合异步模型,再次总结Netty多线程编码最 ...