社区
Java SE
帖子详情
关于String对象的clone方法
domimasi
2007-07-23 09:17:10
String对象也是对象啊,为什么不能象其它对象那样可能呢?
...全文
572
10
打赏
收藏
关于String对象的clone方法
String对象也是对象啊,为什么不能象其它对象那样可能呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
beiouwolf
2007-07-26
打赏
举报
回复
STRING类是一个特殊的类
他的定义是FINAL的
而且,他的一些操作符也全都重写过的
JAVA的意思就是让你把STRING当作基础变量来用
他的表现和int,long这些基础类型是一样的
IhaveGotYou
2007-07-25
打赏
举报
回复
class Student implements Cloneable
{
String name;
int age;
public Object clone(){
Student o = null;
try{
o = (Student)super.clone();
}catch(CloneNotSupportedException e){
e.printStackTrace();
}
return o;
}
}
//这是浅clone;
class Student implements Cloneable
{
String name;
int age;
public Object clone(){
Student o = null;
try{
o = (Student)super.clone();
}catch(CloneNotSupportedException e){
e.printStackTrace();
}
return o;
}
}
//这是浅clone;
public Object clone(){
Student o = null;
try{
o = (Student)super.clone();
//因为String 类是final的,故没有覆盖clone方法;
//不能这样写:o.name= (String)name.clone();
o.name=name.subString(0,name.length());
//或o.name=new String(name);
}catch(CloneNotSupportedException e){
e.printStackTrace();
}
return o;
}
//这样就是深clone
yijie1206688
2007-07-25
打赏
举报
回复
你用String str = new String();试试看
domimasi
2007-07-25
打赏
举报
回复
为什么会创建一个新的name呢?既然是个类,那他应该克隆的只是他的应用啊,应该指向同一个内存才对啊.
yyw84
2007-07-25
打赏
举报
回复
class Student implements Cloneable
{
String name;
int age;
Student(String name,int age)
{
this.name=name;
this.age=age;
}
}
=======================
实际上我想这里实现的一样是浅克隆, 不过由于 String 是一个特殊的类, 它是不可见的, 问题就在这里, 假设原来的Student的实例为s1, 再克隆出一个s2出来, 当我们修改s1.name的值时,实际上是创建一个新的name,再赋值给s1.name, 所以s2.name的值并没有受到影响, 不过这到底应该理解为深克隆还是浅克隆呢? 我也说不清楚了
domimasi
2007-07-25
打赏
举报
回复
1
我说的不是这个意思,我给段源代码吧.
class Student implements Cloneable
{
String name;
int age;
Student(String name,int age)
{
this.name=name;
this.age=age;
}
}
在这个类中实现了Cloneable接口,所以这个类是可以克隆的,但是String不是基本数据类型,而是一个类,所以他的克隆应该和其他的类一样是个浅拷贝才对.但是为什么它和基本数据类型一样,可以实现完全拷?
andybogard
2007-07-24
打赏
举报
回复
protected比package权限多一点的地方就在于可以被子类引用。但它同package一样不能被非该包中的其他类引用。
String所在的 包为java.lang.String,而你自己写的类却不在这个包中,所以你不能访问到clone方法。
举个例子:
package com.sina.www;
public class A{
protected void function(){}
}
package com.sina.www;
public class B extends A{}
}
package com.sina.www;
public class AppOne{
public static void main(String[] args){
B b = new B();
b.function();//这是正确的。
}
}
package net.nytimes.www;
public class AppTwo{
public static void main(String[] args){
B b = new B();
b.function();//错误。因为不在同一包中。这和你所说的情况是一样的
}
}
Vue3卖座电影H5移动端开发
关于本课程本课程为Vue2+Vue3仿卖座电影H5移动端实战项目;技术栈包括但不限于:Vue2/Vue3 + Vite + VueRouter + Vuex + Axios + Vant3 + json-server;项目源码:git
clone
https://gitee.com/steveouyang/mymovie_2207.git;课程特色零基础教学,由浅入深,通俗易懂,物超所值;全面覆盖Vue全家桶核心技术栈;注重实战,同时注重原理,授人以鱼更授人以渔!课程收益深入理解Vue原理深入理解axios封装原理深入理解前端路由的使用深入理解前端项目的MVC结构深入理解Vuex全局状态管理的使用掌握Vant组件库的使用并能够基于Vant做二次封装自己的组件写在最后就连太阳光照到地球都需要8分钟,所以,你也需要时间,耐心一点,持续修炼。
浅谈java
对象
的
clone
方法
(
String
类型的特殊性)
我们都知道
clone
分为深
clone
和浅
clone
,基本类型能自动实现深
clone
,...但是
String
类型却是一个特殊,
String
虽然属于引用类型,但是
String
类是不可改变的,它是一个常量,一个
对象
调用
clone
方法
,克隆出一个新
对象
...
阿里公约【推荐】慎用 Object 的
clone
方法
来拷贝
对象
。
为什么阿里Java手册推荐慎用 Object 的
clone
方法
来拷贝
对象
? 前言 在阿里Java开发手册中,有这么一条建议:慎用 Object 的
clone
方法
来拷贝
对象
。
对象
clone
方法
默认是浅拷贝,若想实现深拷贝需覆写
clone
...
C.示例中的
String
.
Clone
()
方法
C#
String
.
Clone
()
方法
(C#
String
.
Clone
() Method)
String
.
Clone
() method is used to make a
clone
of a
string
object, it returns a reference to ...
String
.
Clone
()
方法
用于创建字符串
对象
的克隆,它返回对...
java
string
clone
_Java
Clone
深拷贝与浅拷贝的两种实现
方法
1.首先,你要知道怎么实现克隆:实现
Clone
able接口,在bean里面重写
clone
()
方法
,权限为public。2.其次,你要大概知道什么是地址传递,什么是值传递。3.最后,你要知道你为什么使用这个
clone
方法
。先看第一条,简单...
Java SE
62,614
社区成员
307,327
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章