当前位置:编程学习 > JAVA >>

高分讨论java的基础问题

--------------------编程问答-------------------- 1:只能看被实现的类声明了那些接口
3:logger
4:IDE里面设置项目依赖
5:对 --------------------编程问答-------------------- 谢谢楼上,本人是生手,能说的具体一些吗?

关于第1点,如果直接文本打开源代码,是无法区分是不是实现接口的,而且如果我删除了原接口的一个方法,在实现类里面就多了一个垃圾过程。有没有什么机制避免这种情况?

例如命名规则的问题,XXX_YYYY,XXX是实现接口的名字,YYYY是接口的名字。


--------------------编程问答-------------------- 6. JAVA的静态类可不可以用在进程的通信? 比如在,A、B两个客户通过浏览器访问Servlet,通过静态类通信。如果能实现,有什么具体的技巧和要求吗? --------------------编程问答-------------------- 1,给一个不用IDE的理由。。接口里面的默认声明(且只能是)就是public,你不想公开何必用接口
2,java一般都自动回收,不必你自己调用。
3,4,5楼上已有说明
6,没看明白。。。 --------------------编程问答--------------------
引用 4 楼 ss36290109 的回复:
1,给一个不用IDE的理由。。接口里面的默认声明(且只能是)就是public,你不想公开何必用接口
2,java一般都自动回收,不必你自己调用。
3,4,5楼上已有说明
6,没看明白。。。


问题1: 为什么不用IDE? 呵呵不是不用,因为是生手所以在网上阅读很多代码,就有我说的问题了。关于开放性,我是用接口实现事件回调的机制,似乎java只有这种方法吧? 而该事件的至少我不想对包外开放。

问题2:自动回收?是怎么一个机制啊? 需要配置什么参数吗?例如websphere 我看了一些老手谈经验,会说JAVA会内存溢出的,

问题6:就是用户A 访问 servlet时在其中的静态类设置了某个参数,用户B通过servlet能读到这个参数吗? 不要通过文件或者数据库的方式。

--------------------编程问答--------------------
1.Java代码的 实现接口的方法,如果不用IDE工具,如何区分一个过程是自己的方法,还是实现接口的方法。因为如果是继承超类我可以加上@Overried, 接口我该用什么标志呢?还有实现接口的方法能不能不使用Public,也就是对外不可见。

个人感觉接口不需要加,implements必须实现所有方法了
接口中的方法默认就是public修饰的,不能改


2. Java的资源回收机制调用 System.gc(),据了解System.gc()的调用比较耗费性能 ,什么时候调用比较合适? 例如环境:AIX+websphere,有没有一直资源监控的事件机制,当资源(例如内存)超出某个值时,调用System.gc()

System.gc()也只是建议jvm进行垃圾回收,至于jvm何时回收,咱确实管不着,也没法管

3. java有没有一种调试机制:例如一些信息输出语句,只在IDE调试环境有效,正式编译发布时无效。

参考log4j 可以在properties/xml中配置输出信息的级别

4. 一个项目如何引用另外一个项目,不是引用JAR文件,而是直接引用,这样更加方便debug

ide

5. 在传递参数时,如何防止一个对象被修改? 是用clone吗
普通可以用final避免被重新assign
clone就要写深copy方法了
object的clone不好使 --------------------编程问答-------------------- 1.实现接口的方法也只能是public哦..可以去测下的
6.可以的 --------------------编程问答-------------------- 新年好!呵呵。 --------------------编程问答-------------------- 楼上新年好,大家新年好 --------------------编程问答-------------------- --------------------编程问答-------------------- 骚年 实现接口依然是@Override --------------------编程问答-------------------- 实现接口依然是@Override

不对吧? --------------------编程问答-------------------- 的确是@Override

--------------------编程问答-------------------- 1 实现接口的方法依然是 @Overried ;实现接口和重写父类方法的访问修饰符不能比接口声明的更严格 接口方法只能声明为public
2 不建议使用System.gc()  这个方法的调用并不能保证JVM进行垃圾回收;把垃圾回收交给JVM自己处理吧
3 你可以看看断言机制 可以启用或禁用断言
4 不知
5 不知 --------------------编程问答-------------------- 6,静态类一般作为工具类使用,没有实例
当然要用来传递消息的话,只要用一个静态的哈希成员即可
class A
{
public static HashMap mapping;
}
--------------------编程问答-------------------- 前4点大家都说了,我就说下5和6我的看法。

5:final修饰是无法保证参数不被篡改的,final只能保证引用不被修改,但可以直接修改对象。要想保证参数不被修改,我觉得只有2个办法,一是深度clone,二就是把参数的类型写成不可变类,如果原类型是可变类就写一个不可变的子类,不过很多java自带类型都是final修饰的,所以这个方法更多用在自编类上。

6:你说的是静态方法和静态成员变量吧?除非是内部类,否则不存在静态类一说。
static修饰的任何东西都意味着它是类相关的,而不是对象相关,一旦JVM的方法区加载了该类,就会一直保存在方法区中,也包括类中static修饰的东西,方法区会贯穿整个应用,所以static修饰的东西可以看成公共品,大家都能用,自然也能通信。
JAVA中通常都是用静态属性来实现缓存,就是这个原因。 --------------------编程问答-------------------- 先看看书,这些问题也太难回答了,不是不会回答,是要讲起来也太多了点 --------------------编程问答-------------------- 1.接口和继承一样,都是@Override;实现一个接口就必须强制实现接口中的每个函数
2.一般来讲不要显式调用System.gc(),除非有特殊情况。至于什么特殊情况我就不知道了
3.在一个专用的类中写一个静态方法里面有System.out,需要输入信息就调用这个方法,发布的时候把这句System.out注释掉就行了
4.这个没搞过
5.是的 --------------------编程问答-------------------- [code=八股文]
2. Java的资源回收机制调用 System.gc(),据了解System.gc()的调用比较耗费性能 ,什么时候调用比较合适? 例如环境:AIX+websphere,有没有一直资源监控的事件机制,当资源(例如内存)超出某个值时,调用System.gc()
[/code]

GC是优先级比较低的线程,System.gc()是建议垃圾收集,至于什么时候,不好确定,一般不手工调用System.gc(),GC比较耗资源的。
JVM采用分代思想,把内存分成年轻、老、永久等几代,可通过JDK参数调整JVM内存分配,减少GC次数。 --------------------编程问答-------------------- 静态方法和静态成员变量吧?除非是内部类,否则不存在静态类一说。
static修饰的任何东西都意味着它是类相关的,而不是对象相关,一旦JVM的方法区加载了该类,就会一直保存在方法区中,也包括类中static修饰的东西,方法区会贯穿整个应用,所以static修饰的东西可以看成公共品,大家都能用,自然也能通信。
JAVA中通常都是用静态属性来实现缓存,就是这个原因。 --------------------编程问答-------------------- @Override --------------------编程问答-------------------- 大家新年好!怎么看不到自己的回复呢? --------------------编程问答-------------------- 问题都比较菜 多练练小程序 看看基础视频 --------------------编程问答-------------------- --------------------编程问答-------------------- 1 , 不能达到楼主的要求,因为你理解的接口与java思想的借口不一样,java思想中得接口更多是一个抽象的公共功能,因此默认方法为public。
2, Java的资源回收机制调用 System.gc()的理解完全错误,当调用System.gc()时,实际JVM是不会立即执行,或者说这个方法不会立即执行。所以也无法做当实时的内存控制。
3, java不具有这种机制,我至今也没有发现其他语言存在这种机制。
5,  java的参数传递方式为值传递而非引用传递,之所以会出现参数被修改的情况,是因为传递的参数本身就是一个引用,因此防止修改的办法有: 1)该为基本数据类型;2)采用Clone; 3)创建对象时加上final(例如String类型)
6, 例子是线程间数据共享而不是进程,JAVA是能够实现线程间数据共享的,缓存也是采用这个原理做的。 --------------------编程问答-------------------- Java接口是这样的,它定义了一组函数(1个或多个),这些函数都是public的,不管怎么写,编译器都会转换为public函数,否则编译不通过。@Override只是标注,表示override了父类方法或者接口方法的含义,去掉不影响java编译器编译,乱加不行。

package com.cachetian.examples;

public interface IProgrammer 
{
void defaultDeclaredFunc();
public void publicDeclaredFunc();
}



package com.cachetian.examples;

public class Csdner implements IProgrammer {

public void defaultDeclaredFunc() {
System.out.println("作为Csdn人,不告诉别人,我也会编程");
}

public void publicDeclaredFunc() {
System.out.println("作为Csdn人,公开了,我还是会编程,而其不加标注也能编译通过");
}

public static void main(String[] args) {
IProgrammer programmer = new Csdner();
programmer.defaultDeclaredFunc();
programmer.publicDeclaredFunc();
}
}

运行结果:
--------------------编程问答-------------------- 讨论地很火热嘛 --------------------编程问答-------------------- 1 ,接口是没有方法体的,如果定义为private的,那可以说你的接口没用。所以默认为public

2, Java的资源回收机制,当调用System.gc()时,JVM是不会立即执行,所以不可能来控制。就算你说的当资源(例如内存)超出某个值时,调用System.gc()。它也不可能达到你的要求

3, java提供的debug模式还可以,现在没看见过你说的这种东西!!

4.不清楚

5, java的参数传递方式为值传递而非引用传递

问题6:就是用户A 访问 servlet时在其中的静态类设置了某个参数,用户B通过servlet能读到这个参数吗? 不要通过文件或者数据库的方式。

 可以的

25楼的回复就很好了。



--------------------编程问答--------------------
das

public class --------------------编程问答--------------------

    public class Test{
       public static void main(String []args){

          System.out.println("hello world");
       }
    }
--------------------编程问答--------------------

public class Test{
public static void main(String []args){
System.out.println("hello world");

}
}
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,