Java中不再谈的问题
来源:互联网 发布:update例子 mysql 编辑:程序博客网 时间:2024/05/20 01:37
Java中不再谈的问题 (增加中)
这里列出的 是我不想再讨论的一些东西。和FAQ(frequently Answered Question)不同,讨论起来烦人。
11、为什么main方法必须用static修饰?
A:public static void main(String[] s)是Java程序的起点。
用static修饰的原因:无中生有。
10、Q: 传说"abcd"是String的引用,对吗?
A:严格地说,字符串常量是String的引用。
由于术语混用的原因,我们常常说"abc"是字符串对象。
如果你认为这是一个传说,不是你的错,是你的老师差劲。
9、Q:操作符& 和 && 的区别是什么?
A:如果你不知道& 也是逻辑运算符(重载的),你可以上网获得很多(错误的)答案。
作为逻辑运算符,&& 是短路的,而&不是。
C语言中&只能够是位运算,因为没有boolean类型,2、1都是true。
8、Q:引用变量、引用和对象三个术语,有必要严格区别吗?
A:学习Java的前一年,你要严格区别。
以后可以顺便混用,你看一本书的时候,首先要明白作者是怎样混用的;
objVar、ref、obj有几种混用方式:
ref与obj混用比较常见,负面效果比较小。
三者全部混用的书,你别看。(基本上没有)
7、Q:关于内存分配,基本变量在栈中分配、对象在堆中分配,对吧?
A:对象在堆中分配/,总在Java heap中分配,这是对的。这里“对象”是指它的所有实例变量,不管是int还是String类型。
基本变量也好、引用变量也好,一般是:作为局部变量在Java栈中分配;作为实例变量在堆中分配。
final变量(包括final局部变量)、static变量则是静态分配。(所以也不能够说:所有局部变量在Java栈中分配。)
6、Q:一个引用变量占据多大空间?
A:对于“Object objVar;”的objVar ,据说被分配了一个字(32位)。
5、Q:一个Object对象有多大?为什么没有sizeof?
A:为什么你想知道它有多大?一般来说,Java不需要sizeof。
C有这个sizeof操作符,因为用户要(不得不)管理malloc调用、因为C语言的primitive types的长度是不固定的。
有人用Runtime.getRuntime().freememory()计算创建一个对象的前后内存余量,如:
static Runtime runtime = Runtime.getRuntime();...
long start, end;
Object obj;
runtime.gc();
start = runtime.freememory();
obj = new Object(); // 你希望看的东西
end = runtime.freememory();
System.out.println("它占据了" + (start-end) + " bytes.");
这个方式不保证准确。
一般而言,一个Object占据了16 bytes(4个字)。
4、Q: new String("aaa")创建几个String对象?
A:没有上下文,答案不定。1 或者2个。
问题中创建对象是什么意思呢?编译时、运行时?
总之知道“常量池”就行了。
3、Q:Java中只有引用没有指针,对吗?
A:reference不过是Java中用的一个术语,不考虑实际的实现方式,它就是一个指针。
Java语言中没有了指针运算(pointer arithmetic),所以ref是安全的指针。事实上,every reference to an object is a pointer.
所以你会遇到NullPointerException。总之,每一个Java程序员都会知道:
int[] a = {0, 1, 2, 3};
int[] b = a ;
b[0] = 88 ;
于是 a[0] 为88 。a and b (持有的值)are pointers (or references) to the same object.
中文中,引用的翻译毫无方向感,注意这一点。
2、Q:构造器和方法的不同有哪些?
A:除了overload机制和长得有点像,其他的都是不同的。
1、Q:Java中对象按引用传递?
A:烦人的问题。
再说Java中有按引用传递,别说我瞧不起你。
榆木脑袋。
- Java中不再谈的问题
- java环境的配置,不再人云亦云!
- Java 不再是 性能之王(构思中)
- Java 8中不再需要StringBuilder拼接字符串
- 为什么Java 8中不再需要StringBuilder拼接字符串
- 为什么 Java 8 中不再需要 StringBuilder 拼接字符串
- 关于Eclipse编辑代码区变灰,不再显示代码的问题
- 让京东的密码问题从此不再重现(NET篇)
- Android6.0处理不再询问的权限问题
- 微信不再支持http导致的问题
- 在HTML5中不再支持的script的属性
- XHTML MP中不再使用的WML属性
- eclipse中让关闭的项目不再显示
- 如何删除xcode项目中不再使用的图片资源
- 如何删除xcode项目中不再使用的图片资源
- html5中不再支持table的cellspacing和cellpadding属性
- html5中不再支持table的cellspacing和cellpadding属
- 如何删除xcode项目中不再使用的图片资源
- javascript让firefox支持innerText
- 实现OS中BOOTLOADER过程,并进入保护模式的代码
- knight遍历棋盘问题,回溯应用
- 用户体验琐记·挂个牌子给谁看
- firefox没有outerHTML用以下方法解决
- Java中不再谈的问题
- C#基础系列(1)-- 第一部分 基础数据类型与操作 -- 位运算(1)
- U盘背景设置
- UDP Sample(CS)
- JDK1.6下载
- SMS C语言的代码
- SOA采用率缘何下降?
- C#中的泛型链表的实现
- 关于接口的知识要点和例子