初学者问个基础问题 见笑

wangaodi3 2015-03-14 06:45:32
刚自学java不太懂,想问一下
一、String str="HelloJava"; 和String str=new String("HelloJava");有什么区别?

二、
package test;
public class test{
public static void main(String[] arg){
String str="helloWord";
String str1="HelloJava";
String substr=str.substring(0, 5);
String substr1=str1.substring(0, 5);
if(substr.equals(substr1)){
System.out.println("两个字串相同");
}
else{
System.out.println("两个字符串不相同");
}
System.out.println(substr+" "+substr1);
}
判断截取的字符串是否相同,如果不想区分大小写怎么办?统一转换成大写或小写吗?还有其他办法吗?
先谢谢各位大神了
...全文
565 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
original_dream 2015-03-23
  • 打赏
  • 举报
回复
第一个是一个对象,另一个是两个对象
Zarlinq 2015-03-20
  • 打赏
  • 举报
回复
第一个问题是有点非常基础了…… 第二个问题……学习了!
leeKitty 2015-03-19
  • 打赏
  • 举报
回复
对于二问题 回答: 用.equalsIgnoreCase()方法 public boolean equalsIgnoreCase(String anotherString)
public class StringDemo {

  public static void main(String[] args) {
  
    String str1 = "sachin tendulkar";
    String str2 = "amrood admin";
    String str3 = "AMROOD ADMIN";

    // checking for equality with case ignored
    boolean retval1 = str2.equalsIgnoreCase(str1);
    boolean retval2 = str2.equalsIgnoreCase(str3);

    // prints the return value
    System.out.println("str2 is equal to str1 = " + retval1);
    System.out.println("str2 is equal to str3 = " + retval2);        
  }
}
  • 打赏
  • 举报
回复
引用 1 楼 still_rain 的回复:
1.String s="Hello Java"是一种非常特殊的形式,和new 有本质的区别,它是java中唯一不需要new 就可以产生对象的途径。以 String s="Hello Java";形式赋值在java中叫直接量,它是在常量池中而不是象new 一样放在压缩堆中。这种形式的字符串,在JVM内部发生字符串拘留,即当声明这样的一个字符串后,JVM会在常量池中先查找有有没有一个值为"Hello Java"的对象,如果有,就会把它赋给当前引用,即原来那个引用和现在这个引用指点向了同一对象。如果没有,则在常量池中新创建一个"Hello Java",下一次如果有String s1 = "Hello Java";又会将s1指向"Hello Java"这个对象,即以这形式声明的字符串,只要值相等,任何多个引用都指向同一对象。也可以这么理解: String str = "Hello Java"; 先在内存中找是不是有"hello" 这个对象,如果有,就让str指向那个"Hello Java"。如果内存里没有"Hello Java",就创建一个新的对象保存"Hello Java"。String str=new String ("Hello Java") 就是不管内存里是不是已经有"Hello Java"这个对象,都新建一个对象保存"Hello Java"。 2.用equalsIgnoreCase这个方法。
学习了!
yongbuyanqi88888 2015-03-19
  • 打赏
  • 举报
回复
引用 1 楼 still_rain 的回复:
1.String s="Hello Java"是一种非常特殊的形式,和new 有本质的区别,它是java中唯一不需要new 就可以产生对象的途径。以 String s="Hello Java";形式赋值在java中叫直接量,它是在常量池中而不是象new 一样放在压缩堆中。这种形式的字符串,在JVM内部发生字符串拘留,即当声明这样的一个字符串后,JVM会在常量池中先查找有有没有一个值为"Hello Java"的对象,如果有,就会把它赋给当前引用,即原来那个引用和现在这个引用指点向了同一对象。如果没有,则在常量池中新创建一个"Hello Java",下一次如果有String s1 = "Hello Java";又会将s1指向"Hello Java"这个对象,即以这形式声明的字符串,只要值相等,任何多个引用都指向同一对象。也可以这么理解: String str = "Hello Java"; 先在内存中找是不是有"hello" 这个对象,如果有,就让str指向那个"Hello Java"。如果内存里没有"Hello Java",就创建一个新的对象保存"Hello Java"。String str=new String ("Hello Java") 就是不管内存里是不是已经有"Hello Java"这个对象,都新建一个对象保存"Hello Java"。 2.用equalsIgnoreCase这个方法。
学习了
默伊清风 2015-03-19
  • 打赏
  • 举报
回复
引用 1 楼 still_rain 的回复:
1.String s="Hello Java"是一种非常特殊的形式,和new 有本质的区别,它是java中唯一不需要new 就可以产生对象的途径。以 String s="Hello Java";形式赋值在java中叫直接量,它是在常量池中而不是象new 一样放在压缩堆中。这种形式的字符串,在JVM内部发生字符串拘留,即当声明这样的一个字符串后,JVM会在常量池中先查找有有没有一个值为"Hello Java"的对象,如果有,就会把它赋给当前引用,即原来那个引用和现在这个引用指点向了同一对象。如果没有,则在常量池中新创建一个"Hello Java",下一次如果有String s1 = "Hello Java";又会将s1指向"Hello Java"这个对象,即以这形式声明的字符串,只要值相等,任何多个引用都指向同一对象。也可以这么理解: String str = "Hello Java"; 先在内存中找是不是有"hello" 这个对象,如果有,就让str指向那个"Hello Java"。如果内存里没有"Hello Java",就创建一个新的对象保存"Hello Java"。String str=new String ("Hello Java") 就是不管内存里是不是已经有"Hello Java"这个对象,都新建一个对象保存"Hello Java"。 2.用equalsIgnoreCase这个方法。
讲的不错,学习了
  • 打赏
  • 举报
回复
给楼主来点简单的吧。看对象后面的id值
JPF1024 2015-03-17
  • 打赏
  • 举报
回复
老问题了,学习了
引用 1 楼 still_rain 的回复:
1.String s="Hello Java"是一种非常特殊的形式,和new 有本质的区别,它是java中唯一不需要new 就可以产生对象的途径。以 String s="Hello Java";形式赋值在java中叫直接量,它是在常量池中而不是象new 一样放在压缩堆中。这种形式的字符串,在JVM内部发生字符串拘留,即当声明这样的一个字符串后,JVM会在常量池中先查找有有没有一个值为"Hello Java"的对象,如果有,就会把它赋给当前引用,即原来那个引用和现在这个引用指点向了同一对象。如果没有,则在常量池中新创建一个"Hello Java",下一次如果有String s1 = "Hello Java";又会将s1指向"Hello Java"这个对象,即以这形式声明的字符串,只要值相等,任何多个引用都指向同一对象。也可以这么理解: String str = "Hello Java"; 先在内存中找是不是有"hello" 这个对象,如果有,就让str指向那个"Hello Java"。如果内存里没有"Hello Java",就创建一个新的对象保存"Hello Java"。String str=new String ("Hello Java") 就是不管内存里是不是已经有"Hello Java"这个对象,都新建一个对象保存"Hello Java"。 2.用equalsIgnoreCase这个方法。
aa18229927211 2015-03-17
  • 打赏
  • 举报
回复
第一个是直接定义一个String类的一个对象引用,引用的值"hellojava"是直接在java常量池中取,如果在常量池中没有hellojava这个字符串,常量池则新建hellojava字符串,在java程序编译阶段就确定, 第二个是新建一个Strng类的对象,Str被存放在栈空间中,无论是在堆空间中是否已经存在Hello java这个字符串都会新建一个Hello java字符串,从而内存地址和已经存在的相同的字符串的内存地址是不 同的在java程序的编译阶段没有确定,必须要在执行程序是才能 完成对象的赋值。
leeabc 2015-03-16
  • 打赏
  • 举报
回复
都有了一个new说明是个新的String啊,你有100块我也有100块,你的100块是我的么
爱摸鱼de老邪 2015-03-14
  • 打赏
  • 举报
回复
1.String s="Hello Java"是一种非常特殊的形式,和new 有本质的区别,它是java中唯一不需要new 就可以产生对象的途径。以 String s="Hello Java";形式赋值在java中叫直接量,它是在常量池中而不是象new 一样放在压缩堆中。这种形式的字符串,在JVM内部发生字符串拘留,即当声明这样的一个字符串后,JVM会在常量池中先查找有有没有一个值为"Hello Java"的对象,如果有,就会把它赋给当前引用,即原来那个引用和现在这个引用指点向了同一对象。如果没有,则在常量池中新创建一个"Hello Java",下一次如果有String s1 = "Hello Java";又会将s1指向"Hello Java"这个对象,即以这形式声明的字符串,只要值相等,任何多个引用都指向同一对象。也可以这么理解: String str = "Hello Java"; 先在内存中找是不是有"hello" 这个对象,如果有,就让str指向那个"Hello Java"。如果内存里没有"Hello Java",就创建一个新的对象保存"Hello Java"。String str=new String ("Hello Java") 就是不管内存里是不是已经有"Hello Java"这个对象,都新建一个对象保存"Hello Java"。 2.用equalsIgnoreCase这个方法。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧