java 新手,求高手!!!哪里出错了????????? 求java高手指导下面这个求1到100阶乘的和的程序哪出错了...

作者&投稿:满怕 (若有异议请与网页底部的电邮联系)
为什么呢?因为你的String 和系统的String冲突了
String r = new String(s);会报错,这是因为系统认为这个String对象时你自己当前的这个String类来创建的,但是你并没有这个构造方法,所以系统就会认为你是错的~!你必须写上包名全路径!

呵呵,这个说简单起来很简单,我可以马上直接告诉你错在哪。但是对于初学者而言,真正的理解就不是很容易了。
错误就在于,你编写的类名上,是String,String是java的核心类,是不允许我们自己修改和破坏的。
难点就在于,你得从java的核心机制中去了解。也许现在你可能不太明白,但是等你学习java到一定的水平的时候,再回头看我今天下面写的话,你应该会有所收获的。
因为String 类是java的核心类,同时String类是final修饰的,被final修饰的类是不能被继承。
从java的动态加载机制中可以更好的来分析该问题。
当运行Java程序时,首先运行JVM(Java虚拟机),然后再把Java class加载到JVM里头,放在内存的程序代码区中运行,负责加载Java class的这部分就叫做Class Loader,Class Loader有好几层。
站在Class Loader角度上来讲,每一个被Loade进来的class文件就是Class的对象。JVM不是一次性把所有的Class文件都loade进来,而是需要某个class的时候就loade哪个class。这是java的动态加载机制。
但是,当程序需要某个class的时候,首先会去检查当前所需要的这个class有没有被加载进来。这时当前底层的Class Loader就会去调用它的上一层的Class Loader引用的一个getParent()方法,这个方法是去检查它的上一层的Class Loader有没有加载进所需要的class。这种调用检查时逐级的,就是一级一级的调用方法去检查。如果到了顶层的Class Loader发现没有加载,那么就会把需要的class加载进来。如果有,那么就不会再去加载该class了。
简单点就是说,我程序代码现在运行到某一行,需要一个类,这个时候就会去检查这个类有没有被加载到内存,如果有,就直接从内存中用。如果没有,那么就去把这个需要的类加载进来,再去使用。
java中的String类是它的核心类,所以在程序运行之初就会被加载进来。这样做的好处就是保证了java语言的稳定性和安全性。就是为了防止楼主所提到的问题。所以我们是永远没有机会自己去创建这个String核心类,并且去改写其中的代码,从而破坏核心类而导致java程序的崩溃。

package chuanxin;
public class String1 {
public static void main (String[] args){
java.lang.String s="we love java!";
System.out.println(s);
String r=new String (s);
System.out.println(r);
}

}

你太牛了 从没遇到哪个新学的人把类名命名成String。。。

类名不对,换一个。String r=new String (s);括号里的s不能这样写,应如:"aaa”。

类名改一下,不要和java的关键字相同

java新手求高手,哪里错了?~

for(int j=1;j<x.length;j++);
{if(x[j]>max)
max=x[j];}
这里你的j定义在for()里,相当于局部变量,下面是不认的

把int sum=1;写到第一个for里面就可以
算阶乘的话用递归方法比较好。
public static void main(String[] args) {
int product=0;
for(int i=1;i<=100;i++){
product+=factorial(i);
}
System.out.println("product=" + product);
}


public static int factorial(int n) {
int product=0;
if (n > 1) {
return product+=factorial(n - 1) * n;
}
return 1;
}