学习JAVA 一个半月时间,遇到一些基本问题, 烦请高手们的解答下或菜鸟们共同学习下.

Cpp_fan 2006-10-09 01:51:37
以前一此在搞C++, 最近一个半月遇到不少问题,有一些自己想明白了,有一些还一直没搞清楚,将自己平时对问题的总结一个来向大家请教,可能有一些很低级,还请在高手看了我的这些问题后,感觉我在学JAVA哪些方面出了问题,为什么不能自己解决这些问题,也可以推荐哪些书比较适合我,先谢谢大家了.

问题一:有关Java 后台使用程序的构架?
1. 使用 Java 写一个服务程序,没有任何UI, 有必要使用现成的一些框架吗?
如 Structs 或 Spring, 我现在访问数据库使用的是Hibernate, 如果有必要使用, 现成的比较成熟的框架哪一个对我这种情况比较适用?

问题二:JAVA 如何得到程序被退出的消息或者还是无法得到?
比如 Linux 做为服务后,在服务被 stop 时,能得到对应的响应吗?

问题三: JAVA 对象的内容分配问题
JAVA 中使用 List 和 Map 对象会增加内容使用吗?
比如String str1; Object o1;
使用一个List 做增加 list.push(str1); list2.push(o1);
 同时使用一个MAP做增加 map.push(str1, o1);此时在系统的内存中是一份 str1 ,o1 还是二份?

问题四:JAVA中有没有类似C++中的 pair 类?
相当一个永远只有一个元素的 map,如果只有一个元素用map不太方便,在改变值的时候还得先调用 clear 再put.

问题五.JAVA中有C++类似模板的替代写法吗
在C++中有一个模板类
template<class T>
class DataPool {
T a;
void setdata(T b) {
a = b;
}
T getData() {
return a;
}
}
使用的时候 DataPool<int> 表示为 int 型的, DnpPool<float> 表示为 float.

在JAVA中是不是以下写法,这样每次使用的时候都要做强行转换,有没有更好的实现方法不用强行转换吗?
public class DataPool {
Object a;
public void setData(Object b) {
a = b;
}
public Object getData() {
return a;
}
}

问题五.JAVA中有无类拟C++中一些使用函数指针能实现的功能,描述如下:
JAVA中如何能不能通过一些手段实现类似下面功能的函数(C++的类成员函数指针可以办到);
1. 比如 class A {
...
public :
bool isFunctionA();
bool isFunctionB();

}
static void doByFuncA(A a) {
1. 先做一些相同处理;
2. 再由 a 中的 isFunctionA() 的值来做不同处理.
3. 再做其它相同处理.
}
static void doByFuncB(A a) {
1. 先做一些相同处理;
2. 再由 a 中的 isFunctionB() 的值来做不同处理.
3. 再做其它相同处理.
}
doByFuncA和 doByFuncB 除了第二步不同以外,其它的完全相同,
当然你可以通过再增加一个参数 doByFunc(A a, int type);来根据不同的 type 来做不同的事情
这样在type 和 isFunctionA 之间就要人为去定义一个约定,不是最好的解决办法.

问题: 在JAVA中可不可以通过 doByFunc(A a, String functionName),直接由 functionName就得到函数的写法.
如 doByFunc(a, "isFunctionA"); 这样就可以直接调用到 a.isFunctionA() 而不用在程序中写
doByFunc(A a, String funcName) {
if (funcName == "isFunctionA") {
result = a.isFunctionA();
}
}
...

在C++中的实现方法是
void doByFunc(A a, bool(A::*pFunc)()) {
...
if (a.*pFunc()) { //调用类成员的函数指针
...
} else {

}
...
}
调用时:
doByFunc(a, &a::isFunctionA); //表示使用 A 函数
doByFunc(a, &a::isFunctionB); //表示使用 B 函数
以后再增加了 isFunctionC 只要参数和返回值和 A, B 相同还是可以调用 doByFunc(a,&a::isFunctionC) 而不用改到doByFunc函数.
...全文
383 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
gseah 2006-10-10
  • 打赏
  • 举报
回复
wwww
whfasrp2005 2006-10-10
  • 打赏
  • 举报
回复
学习
guileen 2006-10-10
  • 打赏
  • 举报
回复
因为他们有点象,但事实上他们根本不是一条道上的
Tim_Yang 2006-10-10
  • 打赏
  • 举报
回复
我来回答第二个问题,你可以考虑使用
java.lang.Process.waitFor()
yybjroam05 2006-10-10
  • 打赏
  • 举报
回复
我有一个问题一直不明白!为什么很多人在提问时都把java和c++来比较?
jicken_woo 2006-10-10
  • 打赏
  • 举报
回复
小鳥學習一下!
leehq 2006-10-10
  • 打赏
  • 举报
回复
1.现在起java有很多成熟的J2EE技术可供选择,你自己能在网上看到,我就不列举了。
2.用Runtime的addShutdownHook方法可以添加一个在JVM退出时就自动运行的线程。
3.Java的对象类似C++的指针,所以你说的那些都是引用了同一个实例。
4.不清楚。
5.JDK1.5有模板,但是Java把那叫做“泛型”。
6.Java没有指针,也没有全局函数,只有对象。所以你无法用C++的写法,你只能让"class A"去调用另一个对象的方法,例如:
class A
{
B b;
}

class B
{
boolean FunctionA()
{
}

boolean FunctionB()
{
}
}
Cpp_fan 2006-10-10
  • 打赏
  • 举报
回复
==========================
这些都知道了又如何? 你应该从core java学起,学会了那些东西自然就会了
==========================

因为我不喜欢上来问这种问题:
1. 我应该如何学习JAVA ?

我想要的是找到自己最适合的学习JAVA的方法.

我比较喜欢自己先学,再把带着自己发现的问题来问大家,通过大家的回复或指导,能让自己找到最合适自己的学习方法.

谢谢你的建议
Cpp_fan 2006-10-10
  • 打赏
  • 举报
回复
谢谢大家的回复, 今天回去就买本<< Core Java>>来看

========================
yybjroam05(月蒙影) ( ) 信
我有一个问题一直不明白!为什么很多人在提问时都把java和c++来比较?
========================
用我自己的感觉回复一下,是因为我以前一直用的是C++, 怕问题描述不清楚,所以写上一些 C++的代码,主要就是怕问题描述清楚.
zhanghongqiao 2006-10-10
  • 打赏
  • 举报
回复
帮UP下………………
没时间看!
gray820928 2006-10-10
  • 打赏
  • 举报
回复
学习ing
jk88811 2006-10-09
  • 打赏
  • 举报
回复
1、具体情况具体分析,就数据库来说,直接使用JDBC,Hibernate,ibatis, JDO很多选择的,应该是我们主导技术,选择适合的技术。
2、不知道
3、对象只有一个,你要学习一下Java对象与引用的相关知识了。总之你不需要担心内存或者性能什么的。
4、我不知道有没有pair,但我好像并没有强烈的需要到。再说,你可以自己实现的。
5、Java 5.0的泛型,你可以研究一下。不过确实没有C++彻底,它只是编译层面上的事情。不过强制类型转化也不是必须的,你可以自己选择。
6、是函数指针吗?Java里面应该没有吧,当然你也可以实现,用些判断就可以了。

顶楼上,其实最重要的是实践。
BTW,《Core Java》确实是好书!

乱讲的!其实,我是一只菜鸟!
wmzsl 2006-10-09
  • 打赏
  • 举报
回复
这些都知道了又如何? 你应该从core java学起,学会了那些东西自然就会了
amozon 2006-10-09
  • 打赏
  • 举报
回复
主要是思考方式不一样,注重的角度不同,会java现在啃C++也郁闷得很呢
1.spring,ejb这些都可以看看,其实不是都要用,只是学会那些思想
2.没研究过
3.1份
4.完全可以用map自己写一个pair的数据结构
5.用instanceof判断object是你需要转换的类型再转换,除非你真的很有把握
这个问题似乎是泛型,java的泛型不象c++那样好用
6.似乎可以把2单独写成不同的2个private方法,然后用一个方法去判断调用,可能比C++要复杂一些
sunday_hl 2006-10-09
  • 打赏
  • 举报
回复
前段时间学了一下,又有好久没看书了。

有的问题有一些印象,但说不出个所有然来。

学习一下先,还是等待高人来回答吧。
Cpp_fan 2006-10-09
  • 打赏
  • 举报
回复
没有必要一次全回答,知道多少说多少吧. 谢谢了

62,614

社区成员

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

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