同意樓上的意見! java中的這個程序入口是必須有的! 把命令行參數传递给main() 它是以字符串类型传递给mian()的! 比如:java bus this is a bus 那么 在arg[0]中存的是this 在arg[1]中存的是is 在arg[2]中存的是a 在arg[3]中存的是bus 从而就可以在程序中使用这些字符串! 应为他是String类型!他就支持所有String类型的方法!象length, charAt() trim()等!
canfly 你好象搞错了哦 java ququ this is ququ arg[0]=ququ 而不是 arg[0]=this 我记得java是这样,不过c肯定是这样 另外区区我问你jdk编程和jbuild下的java编程区别大吗?有什么区别?简单的说说就可以 别告诉我和vc和bcb区别一样大哦
pseudohandle 这是它的原英文: 在MSDN里是这样: GetCurrentProcess This function returns a pseudohandle for the current process. HANDLE GetCurrentProcess(void); Return Values A pseudohandle to the current process indicates success. Res A pseudohandle is a special constant that is interpreted as the current process handle. The calling process can use this handle to specify its own process whenever a process handle is required. This handle has the maximum possible access to the process object. A process can also use the OpenProcess function to open a real handle to itself. The pseudohandle need not be closed when it is no longer needed. Calling the CloseHandle function with a pseudohandle can have unexplained results. 回复人: xiaoxiaohan(萧晓寒) (2001-12-15 12:23:30) 得0分 当一个进程被初始化时,系统要为它分配一个句柄表。该句柄表只用于内核对象,不用于用户对象或GDI对象。在Windows2000、Windows98和WindowsCE中,它们的实现方法是不同的。 当进程初次被初始化时,它的句柄表是空的。然后,当进程中的线程调用创建内核对象的函数时,内核就为该对象分配一个内存块,并对它初始化。这时,内核对进程的句柄表进行扫描,找出一个空项并对它进行初始化。该指针成员将被设置为内核对象的数据结构的内存地址,访问屏蔽设置为全部访问权,同时,各个标志也作了设置。用于创建内核对象的所有函数均返回与进程相关的句柄,这些句柄可以被在相同进程中运行的任何或所有线程成功地加以使用。该句柄值实际上是放入进程的句柄表中的索引,它用于标识内核对象的信息存放的位置。因此当调试一个应用程序并且观察内核对象句柄的实际值时,会看到一些较小的值,如1,2等。句柄的含义并没有记入文档资料,并且可能随时变更。实际上在Windows2000中,返回的值用于标识放入进程的句柄表的该对象的字节数,而不是索引号本身。每当调用一个将内核对象句柄接受为参数的函数时,就要传递由一个Create*&函数返回的值。从内部来说,该函数要查看进程的句柄表,以获取要生成的内核对象的地址,然后按定义得很好的方式来生成该对象的数据结构。由于句柄值实际上是放入进程句柄表的索引,因此这些句柄是与进程相关的,并且不能由其他进程成功地使用。 将伪句柄转换为实句柄: HANDLE hProcessFalse = NULL; HANDLE hProcessTrue = NULL; HANDLE hThreadFalse = NULL; HANDLE hThreadTrue = NULL;hProcessFalse = GetCurrentProcess( ); hThreadFalse = GetCurrentThread( ); 取得线程实句柄: DuplicateHandle( hProcessFalse, hThreadFalse, hProcessFalse, &hThreadTrue, 0, FALSE, DUPLICATE_SAME_ACCESS ); 取得进程实句柄: DuplicateHandle( hProcessFalse, hProcessFalse, hProcessFalse, &hProcessTrue, 0, FALSE, DUPLICATE_SAME_ACCESS ); 由于DuplicateHandle会递增特定对象的使用计数,因此当完成对复制对象句柄的使用时,应该将目标句柄传递给CloseHandle,从而递减对象的使用计数。
jbuilder jdk有時也用! 不更你爭了!給你一個源碼是一下就知道了! //display all command-line arguments. public class CommandLine{ public static void main(String args[]){ for (int i=0;i<args.length;i++){
System.out.println("args["+i+"]: "+args[i]); } } } 記得用java CommandLine this is a bus 試一試!
比如,运行
java test parm1
则arg[0]的值就是parm1
另外,我不反对你把Java与C做类比,毕竟这两种语言在语法上有太多的相似之处,对学习Java这门由C++演化过来的语言有一定好处,可是如果这成了你学习上的绊脚石就不好啦,要记住这是两种不同的语言,由不同的设计哲学设计出来,存在许许多多的差异。
知其然还要知其所以然,你的问题问得好。
如果一个C/C++程序的main函数没有参数会怎么样?这能阻止你向程序传递命令行参数吗?不能,这些参数仍然被传递进你的程序,只是你不能通过常规途径方便地取得他们罢了。
再来看看Java应用程序,。对不起,明天再接着写。
前幾章還要不要阿!
另外我们班还有谁在csdn混的?id是?(出了我们这些在深圳的)
lux21从你的话看出你这个人不错,呵呵!
比如del file1.txt中file1.txt就是参数....明白了?
这是默认的程序入口阿参数是规定的阿,要是可要可不要(或者说可以过载)程序从哪里开始执行阿就象我们生下来就要上户口阿(tmd,我最近为这个烦死了)没有户口怎么过日子阿(不过好像可以被收容/遣送?!玩过《北京浮生记》游戏吗?你就知道是什么滋味)/*--by bookbobby(书呆)-+
| |
| 你说爱我只是习惯 |
| 再也不是喜欢 |
| 我给你的爱 |
| 已不再温暖 |
| |
+--by bookbobby(书呆)-*/
java中的這個程序入口是必須有的!
把命令行參數传递给main()
它是以字符串类型传递给mian()的!
比如:java bus this is a bus
那么 在arg[0]中存的是this
在arg[1]中存的是is
在arg[2]中存的是a
在arg[3]中存的是bus
从而就可以在程序中使用这些字符串!
应为他是String类型!他就支持所有String类型的方法!象length, charAt() trim()等!
你好象搞错了哦
java ququ this is ququ
arg[0]=ququ 而不是 arg[0]=this
我记得java是这样,不过c肯定是这样
另外区区我问你jdk编程和jbuild下的java编程区别大吗?有什么区别?简单的说说就可以
别告诉我和vc和bcb区别一样大哦
在MSDN里是这样:
GetCurrentProcess
This function returns a pseudohandle for the current process. HANDLE GetCurrentProcess(void);
Return Values
A pseudohandle to the current process indicates success. Res
A pseudohandle is a special constant that is interpreted as the current process handle. The calling process can use this handle to specify its own process whenever a process handle is required. This handle has the maximum possible access to the process object. A process can also use the OpenProcess function to open a real handle to itself. The pseudohandle need not be closed when it is no longer needed. Calling the CloseHandle function with a pseudohandle can have unexplained results.
回复人: xiaoxiaohan(萧晓寒) (2001-12-15 12:23:30) 得0分
当一个进程被初始化时,系统要为它分配一个句柄表。该句柄表只用于内核对象,不用于用户对象或GDI对象。在Windows2000、Windows98和WindowsCE中,它们的实现方法是不同的。
当进程初次被初始化时,它的句柄表是空的。然后,当进程中的线程调用创建内核对象的函数时,内核就为该对象分配一个内存块,并对它初始化。这时,内核对进程的句柄表进行扫描,找出一个空项并对它进行初始化。该指针成员将被设置为内核对象的数据结构的内存地址,访问屏蔽设置为全部访问权,同时,各个标志也作了设置。用于创建内核对象的所有函数均返回与进程相关的句柄,这些句柄可以被在相同进程中运行的任何或所有线程成功地加以使用。该句柄值实际上是放入进程的句柄表中的索引,它用于标识内核对象的信息存放的位置。因此当调试一个应用程序并且观察内核对象句柄的实际值时,会看到一些较小的值,如1,2等。句柄的含义并没有记入文档资料,并且可能随时变更。实际上在Windows2000中,返回的值用于标识放入进程的句柄表的该对象的字节数,而不是索引号本身。每当调用一个将内核对象句柄接受为参数的函数时,就要传递由一个Create*&函数返回的值。从内部来说,该函数要查看进程的句柄表,以获取要生成的内核对象的地址,然后按定义得很好的方式来生成该对象的数据结构。由于句柄值实际上是放入进程句柄表的索引,因此这些句柄是与进程相关的,并且不能由其他进程成功地使用。
将伪句柄转换为实句柄:
HANDLE hProcessFalse = NULL;
HANDLE hProcessTrue = NULL;
HANDLE hThreadFalse = NULL;
HANDLE hThreadTrue = NULL;hProcessFalse = GetCurrentProcess( );
hThreadFalse = GetCurrentThread( );
取得线程实句柄:
DuplicateHandle( hProcessFalse, hThreadFalse, hProcessFalse, &hThreadTrue, 0, FALSE, DUPLICATE_SAME_ACCESS );
取得进程实句柄:
DuplicateHandle( hProcessFalse, hProcessFalse, hProcessFalse, &hProcessTrue, 0, FALSE, DUPLICATE_SAME_ACCESS );
由于DuplicateHandle会递增特定对象的使用计数,因此当完成对复制对象句柄的使用时,应该将目标句柄传递给CloseHandle,从而递减对象的使用计数。
回复人: xiaoxiaohan(萧晓寒) (2001-12-15 12:25:56) 得0分
实句柄会使内核对象的计数加1,而伪句柄不会。
你要记得 用java命令时 后面要class的名字那就是bus 既是java bus 此时是没有参数的情况!
如有呢!就是java bus this is a bus 注意: this is a bus 才是参数!
不过还是建议你,先用jdk然后再用jbuider!
jdk有時也用!
不更你爭了!給你一個源碼是一下就知道了!
//display all command-line arguments.
public class CommandLine{ public static void main(String args[]){ for (int i=0;i<args.length;i++){
System.out.println("args["+i+"]: "+args[i]);
}
}
}
記得用java CommandLine this is a bus 試一試!
不信你试试给我