java--String,toString(课堂)



 

publicclass Strin_g {

 

 publicstaticvoid main(String[]args) {

   Object object =new Object();

   System.out.println(object.equals(new Object()));//false

   String string ="11";

   String string2 ="23";

   String string3 ="23";

   String string4 =new String("23");

   String string5 =new String("23");

  

   //equals是判断内容,比较都是用==。而==是判断内存地址

  

   System.out.println(string.equals(string2));//false数值不相等

   System.out.println(string2.equals(string3));//true数值相等

   System.out.println(string4.equals(string5));//true,因为字符串池里有23string类重写了Object equals方法,用于判断内容是否相等

   //而不是比较内存地址

   System.out.println(string3.equals(string4));//true数值相等

  

   String string6 ="222";

   String string7 ="222" +"2";//这里是三个对象,string7,“222”和"2"。如果把"222"变成"22",就输出true

   System.out.println(string6.equals(string7));//false数值不相等

   System.out.println(string6 == string7);//false内存地址(对象(空间))不相等

   System.out.println(string4 == string5);//false对象(空间)不同

   System.out.println(string2 == string3);true指向的内存地址一样,都是放22的那个空间,只要数值相同,它就不会再次开辟空间来存放数值

   System.out.println(string3 == string4);false内存地址(对象(空间))不相等

  

  

   //字符串池的用法:

       //1、每弄出一个新的字符串,系统都会在字符串池中new一个对象

       //2、再一次创建字符串对象时,系统都会在字符串池中寻找是否存在一个字符串跟要创建的

       // 字符串内容一致,如果有,直接赋值,如果没有,则创建新的对象,然后放入字符串池中

       //3、字符串 通过连接,都会改变成新的字符串, 原先不变,简单的说:

       // 字符串操作的结果都是一个新的字符串

      

  

 }

 

}

 

 

 

 

publicclass Person {

 public Stringname;

 publicintage;

 public Person(Stringname,intage) {//shift+alt+s+o

  

   this.name = name;

   this.age = age;

 }

 @Override

 public String toString() {//shift+alt+s+s,用来测试传入的值是否正确,

                         //因为toString这个方法有返回值

   return"Person [name=" +name +", age=" +age +"]";

 }

 publicstaticvoid main(String[]args) {

   System.out.println(new Person("小白", 10));

 }

 

}

 

 

 

 

 

 

 

 

package com.lijie.lianxi1;

                        面试陷阱        //

publicclass StringDem {

 publicstaticvoid main(String[]args) {

   String string =new String("123");             //创建string对象

   System.out.println("change之前:" + string); // 123    打印

   change(string);            

   //string = change(string);

   System.out.println("change之后:" + string);// 123

  

  

   Student student =new Student();

   student.name = "lisi";

  

   System.out.println("change之前student:" + student.name); //lisi

   change(student);

   System.out.println("change之后student:" + student.name);//zhangsan

  

 }

 

 publicstatic String change(Stringstr){//这里相当于一个新对象,在方法区生成了一个新空间,

                                         //存放着456,与string中存放着的123无关,所以改变str时,

                                    //影响不到string的值,依然是123

   return str ="456"// 123456

 }

 

 publicstaticvoid change(Studentstudent){

   student.name = "zhangsan";// 而这里张三的改变是在lisi的那个空间里,也就是student那里,所以原值改变

 }

}

 

 

class Student{

 public Stringname;

}

 

 引用大神的笔记:

将一个值转换成一个字符串有两种方法,一是使用toString()方法,

二是使用转型函数String()。下面是一些需要注意的问题:

  1,大多值都有toString()方法,null和undefined是没有的。

  2,对于字符串型的值也可以使用toString()方法,它会返回

该字符串的一个副本。

  3,toString()方法可以传递一个参数,表示数值的基数。


  1. var t = 8;  
  2. t.toString(2);  //1000  
var t = 8;
t.toString(2);  //1000


  1.   
</pre><p><span style="font-family: Microsoft YaHei; font-size: 12px;">        默认情况下 参数是10。要说明的是对于非数值类型(boolean,string等)设置toString()的参数是无效的,</span></p><p></p><div class="dp-highlighter bg_html"><div class="bar"><div class="tools"></div></div><ol class="dp-xml"><li class="alt"><span><span>var </span><span class="attribute">t</span><span> =</span><span class="attribute-value">"8"</span><span>;  </span></span></li><li><span>t.toString(2);  //8, 返回字符串的副本;  </span></li></ol></div><pre class="html" style="display: none;" name="code" code_snippet_id="115396" snippet_file_name="blog_20131217_1_1944988">var t ="8";
t.toString(2);  //8, 返回字符串的副本;

  4,任何值都可以使用String()方法。它的过程是这样的

     首先,如果值有toString()方法,那么则使用该方法(无参数)。

     其次,那就是该值没有toString()方法,那就是 null 返回 "null",undefined返回"undefined";


  1. var a=null;  
  2. String(a);    //"null"  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小猿成长

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值