今天正好学校那边的任务不多,我就打算把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. 解决Tomcat控制台输出乱码问题

    解决Tomcat控制台输出乱码问题 打开Edit Configuration,在VM options一栏输入 -Dfile.encoding=UTF-8 然后到IDEA的bin目录找到 idea64. ...

  2. 2019.3.14解题报告&补题报告

    A题 题意: 输入r, c,代表r*c的矩阵,接下来一行,是r个数,代表每一行里最大的数:接下来一行,是c个数,代表每一列中的最大数.求所给数据是否冲突. 思路:判断r个数中最大数maxr和c个数中最 ...

  3. 控制游戏/app使用期限/过期,证书有效期,弹出公告支持离线使用/后端控制,支持Swift、Objective-C集成非常简单,永久免费框架

    CertCheck.framework (for iOS) 只能运行于真机上,切勿在模拟器上使用 这是一个控制游戏/app使用期限(到设定的时间无法打开app),或发布弹出公告永久免费的框架,可以全版 ...

  4. 洛谷1880 区间dp+记忆化搜索 合并石子

    题目网址:https://www.luogu.com.cn/problem/P1880 题意是:给定一个序列,最小规则是相邻两个值的合并,开销是他们的和,将整个序列合并成一个值的情况下,求解该值的最小 ...

  5. 《JavaScript 模式》读书笔记(4)— 函数4

    这篇文章我们主要来学习下即时对象初始化.初始化时分支.函数属性-备忘模式以及配置对象.这篇的内容会有点多. 六.即时对象初始化 保护全局作用域不受污染的另一种方法,即时对象初始化模式.这种模式使用带有 ...

  6. 手把手教你用java实现syslog消息的收发,学不会你打我喽!

    大家好,我是道哥,专注于后端java开发,喜欢写作和分享.如果觉得文章对你有用,那就点个赞呗!如果能转发那是对道哥最大的支持! syslog的定义 见文知义,syslog,从英文名字上可以看出是指系统 ...

  7. ubuntu 下python出现pkg: error processing package *python* 解决之道

    1.linux有些自带程序很多是python写的,自带的python2也最好不要升级,不然会有很多问题 2.如果遇到 pkg: error processing package *python* (- ...

  8. OpenCV-Python 图像梯度 | 十八

    目标 在本章中,我们将学习: 查找图像梯度,边缘等 我们将看到以下函数:cv.Sobel(),cv.Scharr(),cv.Laplacian()等 理论 OpenCV提供三种类型的梯度滤波器或高通滤 ...

  9. PyTorch专栏开篇

    目前研究人员正在使用的深度学习框架不尽相同,有 TensorFlow .PyTorch.Keras等.这些深度学习框架被应用于计算机视觉.语音识别.自然语言处理与生物信息学等领域,并获取了极好的效果. ...

  10. 干货 | 近期热点机器学习git项目

    No1:PyTorchImplementation of DeepMind's BigGAN(https://github.com/huggingface/pytorch-pretrained-Big ...