您的位置:首页 > 编程语言 > Java开发

java之旅 (二)基本概念

2004-12-14 09:19 232 查看
在JAVA编程思想(第三版)的第二章讲到了“万物皆对象”。在java里用new创建对象时都会放在堆里,而从效率方面考虑将原始(primitive)数据类型放到了栈里。

关于作用域,如下代码:
///////////////////////////////////////////
{
 int x = 125;
 {
  int x=34; //Illegal
 }
}
////////////////////////////////////////////
在c/c++中,这中写法是没有问题的,这叫作用域屏蔽(是这么叫吧?),但在java里这样写就是非法的,的确这是个很好的避免引起歧义的做法。

接着学习了一些名词,包括 gabage collector(垃圾回收器),类,数据成员,方法,缺省值的问题,参数,返回值,
参数列表,很多都和c++的相同或者相似,学起来并不是很费劲。

下来是名字空间,java设计者为了解决这个问题采用了倒转的域名来作为类库的名称,因为域名都是独一无二的,这样就可以避免重名的问题。(有点感觉,不过还需要实践一下才能真正的理解。)

接着又是两个名词import和static,前一个刚出过错所以很有印象,后一个也很简单。然后是作者利用一个程序教会我们使用java document,这东西真是个很好的东西,公欲善其事,必先利其器,java的这些工具看着就有种让人
大干一场的冲动,我还发现一个jdk文档的chm版,用起来别有一番滋味,呵呵。

“java有一些很好的想法,其中一条就是,写代码并不是唯一重要的事情--制作文档至少和他同种重要。”(我是深深同意这句话的,因为我正在享受没有文档的程序对我的摧残~)

关于javadoc的用法非常的繁多,当然因此制作出来的文档也是非常漂亮的。不过,现在它还不是我学习的重点,先记着有这么回事吧。

接着作者稍微的谈到了编程风格的问题,除了花括号的使用让我不爽外,其他都还可以。-_-b

接下来到了JAVA编程思想(第三版)的第三章,现在还有时间,继续吧。

java运算符和其他编程语言用法基本一样,优先极也是,不过优先级很多人都记不住,不要紧,用括号就可以了。

java的对象附值需要说一下,它附的还是reference(这个翻译java思想第三版的作者并没有翻译这个词,是不是这个词的翻译现在还有争议啊?既然c++都叫它引用了,我们也叫它引用吧,反正起的可不就是引用的作用吗),包括
java的值传递也是传的reference,不是值。

正则表达式

在JAVA编程思想(第三版)的第二章讲到了“万物皆对象”。在java里用new创建对象时都会放在堆里,而从效率方面考虑将原始(primitive)数据类型放到了栈里。

关于作用域,如下代码:
///////////////////////////////////////////
{
 int x = 125;
 {
  int x=34; //Illegal
 }
}
////////////////////////////////////////////
在c/c++中,这中写法是没有问题的,这叫作用域屏蔽(是这么叫吧?),但在java里这样写就是非法的,的确这是个很好的避免引起歧义的做法。

接着学习了一些名词,包括 gabage collector(垃圾回收器),类,数据成员,方法,缺省值的问题,参数,返回值,
参数列表,很多都和c++的相同或者相似,学起来并不是很费劲。

下来是名字空间,java设计者为了解决这个问题采用了倒转的域名来作为类库的名称,因为域名都是独一无二的,这样就可以避免重名的问题。(有点感觉,不过还需要实践一下才能真正的理解。)

接着又是两个名词import和static,前一个刚出过错所以很有印象,后一个也很简单。然后是作者利用一个程序教会我们使用java document,这东西真是个很好的东西,公欲善其事,必先利其器,java的这些工具看着就有种让人
大干一场的冲动,我还发现一个jdk文档的chm版,用起来别有一番滋味,呵呵。

“java有一些很好的想法,其中一条就是,写代码并不是唯一重要的事情--制作文档至少和他同种重要。”(我是深深同意这句话的,因为我正在享受没有文档的程序对我的摧残~)

关于javadoc的用法非常的繁多,当然因此制作出来的文档也是非常漂亮的。不过,现在它还不是我学习的重点,先记着有这么回事吧。

接着作者稍微的谈到了编程风格的问题,除了花括号的使用让我不爽外,其他都
4000
还可以。-_-b

接下来到了JAVA编程思想(第三版)的第三章,现在还有时间,继续吧。

java运算符和其他编程语言用法基本一样,优先极也是,不过优先级很多人都记不住,不要紧,用括号就可以了。

java的对象附值需要说一下,它附的还是reference(这个翻译java思想第三版的作者并没有翻译这个词,是不是这个词的翻译现在还有争议啊?既然c++都叫它引用了,我们也叫它引用吧,反正起的可不就是引用的作用吗),包括
java的值传递也是传的reference,不是值。

正则表达式(Regular Expressions)曾经出现在操作系统的课上让我十分头疼,前几天看c#时又遇到了,没想到
今天又看到了,真是避无可避啊。这里讲它是一种用通用术语描述字符串的方法。

单元的加号和减号,自增和自减,关系运算符。

偶卖糕的。今天到这(Regular Expressions)曾经出现在操作系统的课上让我十分头疼,前几天看c#时又遇到了,没想到
今天又看到了,真是避无可避啊。这里讲它是一种用通用术语描述字符串的方法。

单元的加号和减号,自增和自减,关系运算符。

测试对象的相等性:虽然==和!=能用于所有对象,但得出的结果却未必是你想要的。除了原始数据类型外,
==和!=用在两个对象间都比较的是两个对象的reference,而我们一般要比较的却是对象的内容,我们可以
使用equals()方法,但该方法在object基类缺省行为还是比较对象的reference,所以在比较自己创建的类的对象
时,应该自己实现该方法。好在绝大多数java类库的类都实现了该方法,我们只管用就好了。

短接,位运算符,移位运算符,三元运算符( ? :),逗号运算符(java里只有在FOR循环里有应用),string
的+运算符(自动转换后相加)。

常见的使用运算符中的错误:while( x = y) {//do something},哦,在c++里会不小心犯的错误,java里却不会
出现,因为java里的boolean 是false和true,而不是0 和非0;

类型转换:宽位值转换为窄位值时,java要求你进行明确的显示转换否则产生异常,因此避免了意外出错。

java没有sizeof(),曾经在《c++高质量编程》里被大段讲过的东西终于一下子被咔喳了,真爽。

控制语句:if else; for ; while ; do while;  for (只有for语句才有在“控制表达式”里定义变量的能力,千万别在
其他选择语句或循环语句里这么做。虽然可以定义变量,但也只能是同一个类型而已); break (跳出当前循环)
; continue(立即进入下一轮循环); while(true)==for(;;) ; switch case;

goto后来者:C++程序员在编程时因为担心goto的副作用,都很谨慎的使用它,或者干脆不用,但有时它也会有
很好的效果在适当的地方,(不过我至今还没用到)java终于摒弃了这把双刃剑,同时提供了另一个类似的功能
的东东,以便能在适当的地方起些适当的作用。label.
///////////////////////////////
label1:
outer-iteration
{
 inner-iteration
 {
  //......
  break; //案例1
  //......
  continue; //案例2
  //......
  continue label1; //案例3
  //......
  break label1; //案例4
  //......
 }
}
/////////////////////////////////
在案例1中break中断了内部循环,退到了外部循环。案例2中continue仍在内部循环。案例3中continue到label1
处,重新开始循环。案例4退到label1处,但是这次再不进入循环了(不可思议)。

以上规则同样适用于while循环。

ok,今天到这里,明天学习隐藏实现,对象的初始化和清理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息