java字符串值传递

Java程序设计:this关键字、值传递和引用传递字符串对象、方法之间的调用、包package和import关键字 阅读详情

java字符串值传递注意事项

public class StringTest {
    String str = new String("good");
    char[] ch = { 't', 'e', 's', 't' };
    public void change(String str, char ch[]) {
        str = "test ok";
        ch[0] = 'b';
        }
    public static void main(String[] args) {
        StringTest ex = new StringTest();
        ex.change(ex.str, ex.ch);
        System.out.println(ex.str);// good
        System.out.println(ex.ch);// best
        }
}

内存解析:

内存解析图

注意点,String也是引用类型,且Sting类是final类。在此例中,ch指向ex.ch,两个地址值相同,都指向堆空间中的同一块区域,所以ch能修改对空间中的数组;但是方法体的str虽然最开始是指向ex.str,但是str="test ok"时,str的地址值就发生了改变,就像下面例子:

String s1 = "abc";
String s2 = s1;  // 此时s1和s2地址相同
s2 = "sb" ;     // 此时s2地址已经发生变化;常量池会新开辟一个 “sb” 的空间
System.out.println(s1); // "abc"
System.out.println(s2); // "sb"

而上述例子的ex.ch数组发生了变化是因为他不是final修饰的,即在值传递时注意字符串String类是final类型的

C#上位机开发:西门子/三菱PLC通信,新手直接上手 对着西门子S7协议文档看半天,连“DB块地址怎么写”都搞不懂;写三菱PLC代码时,分不清MC协议和Modbus的区别,代码改来改去连不上;好不容易跑通代码,换个PLC型号又报错,不知道哪里出问题;后来发现,新手学PLC通信根本不用先啃协议文档——先跑通“能通信”的代码,再慢慢理解底层逻辑,效率至少提升3倍。西门子PLC:用S7NetPlus库(新手最友好),实现以太网通信,支持S7-200 SMART/1200/1500; 阅读详情

相关推荐

SOEM主站开发篇(1):移植SOEM主站到Linux开发板

详细介绍了SOEM主站源码移植到Linux开发板上的步骤,同时演示了如何使用Linux开发板获取EtherCAT从站的PDO映射信息。

kevin1499的博客 2347

关于String和java值传递的理解

java值传递 java值传递是指地址值的传递 public class Demo { String str = "aa"; char[] ch = {'a','b'}; public void test(String str, char[] ch){ str = "bb"; ch[0] = 'c'; } public static void main(String[] args) { Demo demo

qq_44737446的博客 635

TIA_V14_SP1 S7-1500 程序模板,包含HMI、Servo(标准块无加密,可仿真。懂行的进!)

该模板应用SIEMENS V90 伺服驱动,G120C变频器。程序中包含:1,标准气缸块 2,G120C 352报文DP通信 控制块 3.V90 伺服控制写法 4,车型信息传递标准块 5.配套的标准TP900 HMI模板等程序上传为归档类型,需解压 (PS: 需要安装StartDrive V14 ,TIA 升级至V14_SP1)

java字符串格式化传参的三种方法

java格式化拼接字符串的三种方法 String.format() java.text.MessageFormat.format() org.slf4j.helpers.MessageFormatter.arrayFormat()/MessageFormatter.format()

O(∩_∩)O哈哈~ 1491

Java String的值传递机制

这时的a作为参数,却被更改了原值,是因为a是作为StringBuffer的实例被使用,同时StringBuffer类中的append()方法是返回该实例。实际上,传参时不应该分成基本数据类型和引用数据类型,因为包含String和StringBuilder/StringBuffer都不会改变原来的对象值。※此外,String是引用数据类型,但是值传递方式比较特殊,使用String类型的对象作为参数传递时,也不会改变原来的String对象。Java中数据类型的传递分为值传递和引用传递。因此没有被修改原值。

qq_46503200的博客 518

java 中JSON数据特殊字符的处理

 JSon 数据中的String 传递数据时,需要处理好特殊字符 JSon数据中有特殊字符 1 :引号   如果是使用单引号,来括值的话,那String 中  '  单引号为特殊字符 2:正斜杠,反斜杠,换行符号等 。另外,必须用 (") 而非 (') 表示字符串: static StringBuffer string2Json(String s) {          Stri...

chen_yu001的专栏 621

Java String 类型参数传递理解

Java String 类型参数传递理解 String里面除了hash这个参数不是final类型的之外,其余参数都是final类型的,String本质上是char[]数组的包装类,所以牵扯到内容变化的函数最后返回String类型的时候都是重新new了一个新的String类型出来,这跟原来传入的String参数就没什么关系了。 因此,我认为,当String作为参数传递时,确实是以地址传递过去的,但是在对String类型的变量的值进行改变时,由于String类的值是常量,在创建后不能更改,所以对String参数

weixin_45318486的博客 2565

integer是值传递还是引用传递_Java字符串值传递还是引用传递

Java字符串值传递还是引用传递这是Java的经典问题。关于stackoverflow,已经提出了许多类似的问题,并且有很多不正确/不完整的答案。如果您考虑不多,问题很简单。但是,如果您对此进行更多考虑,可能会造成混乱。1. 一个有趣且令人困惑的代码片段publicstaticvoidmain(String[]args){Stringx=newString("ab...

weixin_39731107的博客 160

Java中方法参数的值传递机制中的注意事项(字符串常量!!)

Java中方法参数的值传递机制中的注意事项(字符串常量!!) 方法,必须由所在类或对象调用才有意义,若方法含有参数: 形参:方法生命时的参数 实参:方法调用时实际传给形参的参数值 Java中实参值如何传入方法呢? Java里方法的参数传递方式只有一种:值传递。即将实际参数值得副本(复制品)传入方法内,而参数本身不受影响。 形参是基本数据类型:将实参基本数据类型变量的“数据值传递给形参”。 形参是引...

qq_37567606的博客 861

formdata append没有值_Java字符串值传递还是引用传递

Java字符串值传递还是引用传递这是Java的经典问题。关于stackoverflow,已经提出了许多类似的问题,并且有很多不正确/不完整的答案。如果您考虑不多,问题很简单。但是,如果您对此进行更多考虑,可能会造成混乱。1. 一个有趣且令人困惑的代码片段publicstaticvoidmain(String[]args){Stringx=newString("ab...

weixin_39962199的博客 333

问: Java字符串值传递还是引用传递

例1: public static void main(String[] args) { String x = new String("ab"); change(x); System.out.println(x);// ab } public static void change(String x) { x = "cd"; } 例2: public st...

xc_oo0的博客 59

java字符串参数传递_java参数传递值传递和引用传递

java参数传递值传递和引用传递,方法,字符串,参数,数据,类型java参数传递值传递和引用传递易采站长站,站长之家为您整理了java参数传递值传递和引用传递的相关内容。值传递当调用方法进行值传递时,方法内部会产生一个局部变量,在方法内部使用局部变量的值,并不影响传入原来数据的值,包括在使用基本数据类型的包装类。public class Assc{public static void mai...

weixin_39640262的博客 409

java值和地址值传递字符串常量池的理解

#java值和地址值传递的理解: -基本数据类型和基本数据类型的封装类都是:值传递 *形式参数的改变不会影响实际参数的改变(相当于将值复制一份传递给形参,自身没做任何改变) -引用数据类型都是 地址值传递 *形式参数的改变会影响实际参数的改变(将地址值赋值给形参,形参就可以指向实参所指向的地址, 即形参也可以操作实参指向地址的数据了) ...

weixin_30624825的博客 170

java向c++传递字符串数组 com,怎么用值传递一个字符串数组?

如何用值传递一个字符串数组????????????#includeusingnamespacestd;voidfunc(intargc,char**argv){}intmain(void){inti=3;char*p[]={"hello","world","!"};func(i,p);return0;}去掉第1、2行i和p变量的定义直接用值调用函数func(...

weixin_35640673的博客 254

面试官刁难:Java字符串可以引用传递吗?

老读者都知道了,六年前,我从苏州回到洛阳,抱着一幅“海归”的心态,投了不少简历,也“约谈”了不少面试官,但仅有两三个令我感到满意。其中有一位叫老马,至今还活在我的手机通讯录里。他当时扔了一个面试题把我砸懵了:“王二,Java 字符串可以引用传递吗?” 我当时二十三岁,正值青春年华,从事 Java 编程已有 N 年经验(N < 4),自认为所有的面试题都能对答如流,结果没想到啊,被“刁难”了—...

沉默王二 1万+

Java 值传递和引用传递-一字符串

java 代码 package test;       public class StringTest {                public static void changeString(String str){            str="Change+ :"+str;            System.out....

Studyoo 185

Java中只有值传递?一篇文章彻底弄懂

彻底理解Java中为什么只有值传递

bizhe666的博客 2695

java字符串常量 地址相同_java值和地址值传递字符串常量池的理解

#java值和地址值传递的理解:-基本数据类型和基本数据类型的封装类都是:值传递*形式参数的改变不会影响实际参数的改变(相当于将值复制一份传递给形参,自身没做任何改变)-引用数据类型都是 地址值传递*形式参数的改变会影响实际参数的改变(将地址值赋值给形参,形参就可以指向实参所指向的地址,即形参也可以操作实参指向地址的数据了)#注意:String是个特例(当作基本类型处理)-分析:从Str...

weixin_42366533的博客 269

java 字符串对象 引用_java中对于引用传递值传递、传实体和字符串传递的理解对吗?...

传实体和字符串传递不存在的,只有值传递和引用传递java中只有基本类型和对象类型,所有基本类型都是值传递,对象类型是引用传递字符串也是对象类型,是个正儿八经的类。小写的int,long之类的就是基本类型。它们有对象的对象类型,就是大写的版本。值传递或是引用传递来源c语言。引用类似c语言中的指针。c中指针其实是一个数字,对应于一个内存地址。更准确的说是一段连续内存的首地址。真正的数据位于内存中一...

weixin_39762441的博客 147

java中输出字符串变量的引用_Java中的值传递和引用传递

Java中没有指针,所以也没有引用传递了,仅仅有值传递不过可以通过对象的方式来实现引用传递 类似java没有多继承 但可以用多次implements 接口实现多继承的功能值传递:方法调用时,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参数的值。引用传递:也称为传地址。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,在方法执行中,对形式...

weixin_39769740的博客 1042

java中只有值传递_Java中只有值传递

Java中只有值传递值传递(pass by value)是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。引用传递(pass by reference)是指在调用函数时将实际参数的地址直接传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。值传递中有几个例子,先一一的解释一下。数值类型public static void main...

weixin_34395361的博客 155
下一篇: SpringBoot自动配置原理
阿斯伯格患者
博客等级 码龄7年 2粉丝 2原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值