JAVA初学者, 最基础的问题8

来源:百度知道 编辑:UC知道 时间:2024/06/25 05:53:00
public class Test {
public static void mian(String[] args) {
int j =123456 //API: static String valueOf(int i)
}
}
问题是还有int i = 123456 写在类里面是当作是声明
public class Test {
int i = 123345
}
我有看过 int i = 1233456
写在mian方法里是 基础类型的变量, 分配在栈空间里
.....
public class Test {
public static void main(String[] args) {
Test test = new Test();
int date = 9;// 就是这个
BirthDate d1 = new BirthDate(7, 7, 1990)
}
}
问的就是一些语法格式, 跟内容没关系吧
public static void main(String[] args) {
....String s1 = "hello";
....String s2 = "world";
....String s3 = "hello";
....s1 = new String("hello");
....s2 = new String("hello");
System.out.println(...比较相同的...不用管)
}

这里的 String i = "hello"不跟上边的 int i = 123456很相似吗
String i = "hello" 在main方法里到底是什么意思
内存是怎么分配的

String s1 = "hello";
String s2 = "world";
String s3 = "hello";
此时的s1=s3,String s1 = "hello"; 它是在栈中给s1分配一个变量hello,当s3再次分配的时候它会先去从栈中找看有没有hello变量,如果有就直接连接到那个地址,没有就新创建一个,所以此时s1和s3是指向同一个地址,内容相同,记住,他们是存放在栈中。

s1 = new String("hello");
s2 = new String("hello");
此时s1 != s2,对与new来说,它是在内存中分配空间,new s1是它会给s1分配一个空间存放hello,当new s2时,它会给s2分配另一空间存放hello,它们的地址是不同的,所以不相等,而且还要注意的是 “=”比较的是引用,相等于地址吧,所以二者不等,但是你用equals时它们就是相等的,即s1.equals(s2)返回的是true,因为它比较的是对象值。记住,new是在内存中分配空间。

你可能问的是,这些变量到底要写在哪儿吧?
你认为写在类中与方法中都一样,那怎么去写呢..牛人的编码风格是怎么样的呢?写类中还是写方法中..??
---------------------------------------这是你的意思吗??

从功能上讲,写在哪儿都没关系,因为你实现了功能.
但是,从性能以及可读性,还是面向对象的特点等来讲..
原则是:让可见性最小化.
这个意思一是用修饰符,private ,protected....
二是只在一个区域中使用的就定义这个区域中..
比如:
for(int i=0; i<4; i++)
这个i只在for中使用,那就定义在这儿...让它的可到达范围最小.

你的补充问题:
可能是问String s="ff"与String s = new Str