java中String是对象还是类?详解java中的String
有很多人搞不懂对象和类的定义。比如说java中String到底是对象还是类呢?
有人说String 既可以说是类,也可以说是对象。
其实他这么说也没问题, 类和对象其实都是一个抽象的概念。 我们可以把一类东西归集在一起,起一个名字,什么类,专门做什么事的,但是我们也可以说它是一个对象……
所以说String 既可以说是类,也可以说是对象。
但是如果你要深究,比如小编就饿深究了一下,我发现在java.lang中,这是个基础类,你可以好好看lang包中的源码。
public final class String extends Object implements Serializable,Comparable < String >,CharSequence
在java.lang中,String类代表字符串。Java程序中的所有字符串文字,例如"abc",都被实现为此类的实例。
字符串不变; 它们的值在创建后不能被更改。字符串缓冲区支持可变字符串。因为String对象是不可变的,它们可以被共享。例如:
String str =“abc”;
相当于:
char data [] = {'a','b','c'};
String str = new String(data);
以下是一些如何使用字符串的示例:
System.out.println( “ABC”);
String cde =“cde”;
System.out.println(“abc”+ cde);
String c =“abc”.substring(2,3);
String d = cde.substring(1,2);
该类String包括用于检查序列的各个字符的方法,用于比较字符串,用于搜索字符串,用于提取子字符串,以及用于创建将所有字符翻译为大写或小写的字符串副本。案例映射基于Character该类指定的Unicode标准版本。
Java语言为字符串连接运算符(+)提供特殊支持,并为其他对象转换为字符串。通过StringBuilder(或StringBuffer)类及其append方法实现字符串连接。字符串转换通过toString由ObjectJava中的所有类定义并由其继承的方法 实现。有关字符串连接和转换的其他信息,请参阅Gosling,Joy和Steele, Java语言规范。
除非另有说明,否则将null参数传递给此类中的构造函数或方法将导致NullPointerException抛出。
甲String表示在其中UTF-16格式的字符串增补字符由表示替代双(见节的Unicode字符表示在Character类的更多信息)。索引值是指char代码单位,所以补充字符在a中使用两个位置String。
的String类提供使用Unicode代码点(即,字符)处理,除了那些用于处理Unicode代码单元(即,方法char的值)。
所以以后遇到什么问题,小伙伴们可以查文档,看源码。查文档也可以知道它是类,看源码就可以快速的了解这个是啥。
以后你看一个东西是否是interface,class,等等都可以使用类似这种方法。
类: 是对一个实物的主观抽象以及定义, 对象 就是这个类所产生的具体的实例 ,String s=new String();这里的 String 是一个类,s是String类所产生的对象。。
String()
初始化一个新创建的 String 对象,使其表示一个空字符序列。
String(byte[] bytes)
通过使用平台的默认字符集解码指定的 byte 数组,构造一个新的 String。
String(byte[] bytes, Charset charset)
通过使用指定的 charset 解码指定的 byte 数组,构造一个新的 String。
String(byte[] ascii, int hibyte)
已过时。 该方法无法将字节正确地转换为字符。从 JDK 1.1 开始,完成该转换的首选方法是使用带有 Charset、字符集名称,或使用平台默认字符集的 String 构造方法。
String(byte[] bytes, int offset, int length)
通过使用平台的默认字符集解码指定的 byte 子数组,构造一个新的 String。
String(byte[] bytes, int offset, int length, Charset charset)
通过使用指定的 charset 解码指定的 byte 子数组,构造一个新的 String。
String(byte[] ascii, int hibyte, int offset, int count)
已过时。 该方法无法将字节正确地转换为字符。从 JDK 1.1 开始,完成该转换的首选方法是使用带有 Charset、字符集名称,或使用平台默认字符集的 String 构造方法。
String(byte[] bytes, int offset, int length, String charsetName)
通过使用指定的字符集解码指定的 byte 子数组,构造一个新的 String。
String(byte[] bytes, String charsetName)
通过使用指定的 charset 解码指定的 byte 数组,构造一个新的 String。
String(char[] value)
分配一个新的 String,使其表示字符数组参数中当前包含的字符序列。
总结一下(pz):类, 是对一个实物的主观抽象以及定义, 对象 就是这个类所产生的具体的实例 。String s=new String();
这里的 String 是一个类,s是String类所产生的对象。。本质上,String是一个类,可如果说你要使用它时就是可实例化一个对象。
String是一个很特殊的类!不同于基本类型
java中String是对象还是类?详解java中的String的更多相关文章
- Java基础-DBCP连接池(BasicDataSource类)详解
Java基础-DBCP连接池(BasicDataSource类)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 实际开发中“获得连接”或“释放资源”是非常消耗系统资源的两个过程 ...
- CorelDRAW中六种复制对象的方法详解
复制可保证对象的大小一致,复制也是所有操作中最基本的操作.CorelDRAW软件中支持多种复制对象的操作,本教程将详解CorelDRAW中六种复制对象的方法. 方法一 选择复制对象,点击编辑→复制,再 ...
- js数组中foEach和map的用法详解 jq中的$.each和$.map
数组中foEach和map的用法详解 相同点: 1.都是循环遍历数组(仅仅是数组)中的每一项. 2.forEach() 和 map() 里面每一次执行匿名函数都支持3个参数:数组中的当前项value, ...
- FastJson中的ObjectMapper对象的使用详解
写在前面:开发中经常用到json和对象的相互转换,下面将列出FastJson中ObjectMapper对象的API的使用 一.maven工程中pom导入<dependency> <g ...
- XML转换为对象操作类详解
//XML转换为对象操作类 //一,XML与Object转换类 using System.IO; using System.Runtime.Serialization.Formatters.Binar ...
- Cocoa编程中视图控制器与视图类详解
iPhone编程规则是:一个窗口,多个视图.UIView是iPhone屏幕上很多控件的基础类.每个iPhone用户界面都是由显示在UIWindow(这其实也是个特殊的UIView)内的众多UIView ...
- 广告行业中那些趣事系列8:详解BERT中分类器源码
最新最全的文章请关注我的微信公众号:数据拾光者. 摘要:BERT是近几年NLP领域中具有里程碑意义的存在.因为效果好和应用范围广所以被广泛应用于科学研究和工程项目中.广告系列中前几篇文章有从理论的方面 ...
- C#中的多线程使用 -- Thread 类详解(转)
现在C#已经建议摈弃使用 Suspend, Resume 暂停/恢复线程, 也尽量少用 Abort方法中断一个线程. 建议使用线程的同步手段有: Mutex.ManualResetEvent.Auto ...
- Java String类详解
Java String类详解 Java字符串类(java.lang.String)是Java中使用最多的类,也是最为特殊的一个类,很多时候,我们对它既熟悉又陌生. 类结构: public final ...
- java之AbstractStringBuilder类详解
目录 AbstractStringBuilder类 字段 构造器 方法 public abstract String toString() 扩充容量 void expandCapacity(in ...
随机推荐
- 使用FSharp 探索Dotnet图像处理功能2--均衡灰度
重新捡起大学里的图像处理,好像之前什么都没学到,但是我为什么还留着这本书呢?嘿嘿. 看到均衡灰度处理,上来就是积分,概率分布的公式,头微微的有点疼.网上看了点介绍,隔天再拿起书本,总算有了点眉目.简而 ...
- WebService基础学习(三)—CXF
一.什么是CXF? Apache CXF = Celtix + Xfire,开始叫 Apache CeltiXfire,后来更名为 Apache CXF 了,以下简称为 CXF.Apache ...
- Linux Smaba服务器配置
Linux系统默认已经安装了Samba,但是没有安装Samba服务: 1,先查看安装情况:rpm -qa|grep samba 根据系统的安装情况选择下载或者通过光驱安装所缺的rpm包. 我的安装情况 ...
- javascript实现99乘法表
for(var i=1; i<=9; i++) { for(var j=1; j<=i;j++) { document.write(i+"x"+i+"=&qu ...
- nginx源码编译问题
[root@localhost nginx-1.7.4]# ./configure checking for OS + Linux 2.6.32-431.el6.x86_64 x86_64 check ...
- redis 压缩链表
redis 压缩链表 概述 压缩链表是相对于普通链表而言的 当普通链表的数据越来越多, 链表查询性能会低效 当存储的数据较少时, 使用链表存储会浪费空间 压缩链表本质上是一个字符串 压缩链表内存储的数 ...
- 【STL】reverse函数用法
reverse函数的功能是反转排序一个容器中指定元素的内容. 函数参数:reverse(first,last), 其中first,last分别指向被反转序列中初始及末尾位置的双向迭代器(Bidirec ...
- Hibernate考试试题(部分题库)含答案
Hibernate考试试题 (题库) 1. 在Hibernate中,下列说法正确的有( ABC ).[选三项] A.Hibernate是一个开放源代码的对象关系映射框架 B.Hibernate对JD ...
- bootstrap的常用组件和栅格式布局
Bootstrap 是最受欢迎的 HTML.CSS 和 JS 框架,用于开发响应式布局.移动设备优先的 WEB 项目. 因为Bootstrap需要jquery的支持,所以在使用Bootstrap之前要 ...
- 多个php版本的composer使用
由于系统环境变量之前同事安装的laravel是5.1...php默认的环境变量是: 不想破话原有环境变量,因为现在新的项目是laravel5.4...所以在用默认composer require安装时 ...