[关注]Thinking in java 习题中的几个小疑问……
1:
public class E04_DataOnly2 {
int i;
float f;
boolean b;
public static void main(String[] args) {
E04_DataOnly2 d = new E04_DataOnly2();//这里不创建d而直接赋值i=47;f=1.1f;b=false;行不?
d.i = 47;
System.out.println("d.i = " + d.i);
d.f = 1.1f;
System.out.println("d.f = " + d.f);
d.b = false;
System.out.println("d.b = " + d.b);
}
}
2:
public class E07_ShowArgs2 {
public static void main(String[] args) {
if(args.length < 3) {
System.out.println("Need 3 arguments");
System.exit(1);
}
System.out.println(args[0]);
System.out.println(args[1]);
System.out.println(args[2]);
}
}见每个主运行程序上都有这句
public static void main(String[] args){……};
不过一直不太理解
想请问一下args[]数组是做什么用的?
还有
System.exit(1);是什么意思?
是不是程序的结束语句,然后把结果返回到操作系统中?不过(1)中的1是做什么的?3:public class E01_Precedence {
static int a,
x = 40,
y = 60,
z = 10;
public static void main(String[] args) {
a = x + y - 2/2 + z;
System.out.println(a);
a = x + (y - 2)/(2 + z);
System.out.println(a);
}
}
这里的x,y,z可以不用声明变量类型吗?
1:
public class E04_DataOnly2 {
int i;
float f;
boolean b;
public static void main(String[] args) {
E04_DataOnly2 d = new E04_DataOnly2();//这里不创建d而直接赋值i=47;f=1.1f;b=false;行不?
d.i = 47;
System.out.println("d.i = " + d.i);
d.f = 1.1f;
System.out.println("d.f = " + d.f);
d.b = false;
System.out.println("d.b = " + d.b);
}
}
2:
public class E07_ShowArgs2 {
public static void main(String[] args) {
if(args.length < 3) {
System.out.println("Need 3 arguments");
System.exit(1);
}
System.out.println(args[0]);
System.out.println(args[1]);
System.out.println(args[2]);
}
}见每个主运行程序上都有这句
public static void main(String[] args){……};
不过一直不太理解
想请问一下args[]数组是做什么用的?
还有
System.exit(1);是什么意思?
是不是程序的结束语句,然后把结果返回到操作系统中?不过(1)中的1是做什么的?3:public class E01_Precedence {
static int a,
x = 40,
y = 60,
z = 10;
public static void main(String[] args) {
a = x + y - 2/2 + z;
System.out.println(a);
a = x + (y - 2)/(2 + z);
System.out.println(a);
}
}
这里的x,y,z可以不用声明变量类型吗?
2.命令行参数,可以用 java 类名 参数,把参数放到args里.
退出程序.
3.不可以,java是强类型语言.
若变量前面加static就可以不创建d而直接赋值。over
不过那个args[]数组还是不太明白:(
现在只要赋值不就是给变量i,f,b分配内存了吗?
还是像5楼说的那样是因为非静态变量不能在static的main()方法中引用所以才必需要创建对像呢?
2.命令行参数,可以用 java 类名 参数,把参数放到args里.
退出程序.
args[]是个命令行参数吗?一般主要做什么用的?它的那些参数又是干嘛用的?
它不用说明它的参数都有哪些就可以随意用吗?
就像它为啥可以直接写
System.out.println(args[0]);
System.out.println(args[1]);
System.out.println(args[2]);
这里不是没说明0,1,2是args[]数组中的元素吗?
int i=47;
float f=1.1f;
boolean b=false;
这些不是基本类型的数据吗?
应该可以不用创建对像的啊
从形式上说,它只是函数的一个参数.但因为main函数是应用程序的入口.执行时可以在命令行中传进参数.例如:
public class Example
{
public static void main(String[] args)
{
double n,sum=0.0;
for(int i=0;i<args.length;i++)
{
sum=sum+Double.parseDouble(args[i] );
}
n=sum/args.length;
System.out.println("平均数:"+n);
}
}
编译后,在命令行中执行时输入:
C:>java Example 10 20 30 40 50
输出:
平均数:30
静态函数不能直接访问同一个类中的非静态成员和方法,只可以直接访问静态成员和方法,
当你把那些成员变量设为静态成员时,就可以直接调用了;
或者创建对象也可以调用.例如:你这样设置成员变量就可以不用对象了:
static int i=47;
static float f=1.1f;
static boolean b=false;
1、如果还没有创建对象,那么对象中的变量或者方法是不能访问的。
2、String[] args:表示的接收到的命令行参数,如果你不是用IDE运行,而是通过命令行如:java XXX aaa bbb,那么args[]就表示的是接收到的参数aaa和bbb;pbulic static void main(String[] args)象C的main()函数一样都是程序的入口函数;System.exit(int)表示退出程序,0为正常退出,1表示不正常退出。
3、注意:通过逗号的方式可以同时声明多的变量。
static int a,
x = 40,
y = 60,
z = 10;
public static void main(String[] args) {
a = x + y - 2/2 + z;
System.out.println(a);
a = x + (y - 2)/(2 + z);
System.out.println(a);
}
}
就这题有一点疑问了
这里的a先后给赋值了两次
a = x + y - 2/2 + z; 对
a = x + (y - 2)/(2 + z); 的结果没影响吗?