设为首页收藏本站订阅更新

无忧脚本

 找回密码
 加入无忧

QQ登录

只需一步,快速开始

搜索
查看: 17044|回复: 14

Java入门需掌握的30个基本概念

[复制链接]
发表于 2005-8-30 13:09:21 | 显示全部楼层 |阅读模式
Java的白皮书为我们提出了Java语言的11个关键特性。

  (1)Easy:Java的语法比C++的相对简单,另一个方面就是Java能使软件在很小的机器上运行,基础解释其和类库的支持的大小约为40kb,增加基本的标准库和线程支持的内存需要增加125kb。

  (2)分布式:Java带有很强大的TCP/IP协议族的例程库,Java应用程序能够通过URL来穿过网络来访问远程对象,由于servlet机制的出现,使Java编程非常的高效,现在许多的大的web server都支持servlet。

  (3)OO:面向对象设计是把重点放在对象及对象的接口上的一个编程技术.其面向对象和C++有很多不同,在与多重继承的处理及Java的原类模型。

  (4)健壮特性:Java采取了一个安全指针模型,能减小重写内存和数据崩溃的可能型。

  (5)安全:Java用来设计网路和分布系统,这带来了新的安全问题,Java可以用来构建防病毒和防攻击的System.事实证明Java在防毒这一方面做的比较好。

  (6)中立体系结构:Java编译其生成体系结构中立的目标文件格式可以在很多处理器上执行,编译器产生的指令字节码(Javabytecode)实现此特性,此字节码可以在任何机器上解释执行。

  (7)可移植性:Java中对基本数据结构类型的大小和算法都有严格的规定所以可移植性很好。

  (8)多线程:Java处理多线程的过程很简单,Java把多线程实现交给底下操作系统或线程程序完成.所以多线程是Java作为服务器端开发语言的流行原因之一。

  (9)Applet和servlet:能够在网页上执行的程序叫Applet,需要支持Java的浏览器很多,而applet支持动态的网页,这是很多其他语言所不能做到的。

  基本概念

  1.OOP中唯一关系的是对象的接口是什么,就像计算机的销售商她不管电源内部结构是怎样的,他只关系能否给你提供电就行了,也就是只要知道can or not而不是how and why.所有的程序是由一定的属性和行为对象组成的,不同的对象的访问通过函数调用来完成,对象间所有的交流都是通过方法调用,通过对封装对象数据,很大限度上提高复用率。

  2.OOP中最重要的思想是类,类是模板是蓝图,从类中构造一个对象,即创建了这个类的一个实例(instance)。

  3.封装:就是把数据和行为结合起在一个包中)并对对象使用者隐藏数据的实现过程,一个对象中的数据叫他的实例字段(instance field)。

  4.通过扩展一个类来获得一个新类叫继承(inheritance),而所有的类都是由Object根超类扩展而得,根超类下文会做介绍。

  5.对象的3个主要特性

  behavior---说明这个对象能做什么.
  state---当对象施加方法时对象的反映.
  identity---与其他相似行为对象的区分标志.
  每个对象有唯一的indentity 而这3者之间相互影响.

  6.类之间的关系:

  use-a :依赖关系
  has-a :聚合关系
  is-a :继承关系--例:A类继承了B类,此时A类不仅有了B类的方法,还有其自己的方法.(个性存在于共性中)

  7.构造对象使用构造器:构造器的提出,构造器是一种特殊的方法,构造对象并对其初始化。

  例:Data类的构造器叫Data

  new Data()---构造一个新对象,且初始化当前时间.
  Data happyday=new Data()---把一个对象赋值给一个变量happyday,从而使该对象能够多次使用,此处要声明的使变量与对象变量二者是不同的.new返回的值是一个引用。

  构造器特点:构造器可以有0个,一个或多个参数
  构造器和类有相同的名字
  一个类可以有多个构造器
  构造器没有返回值
  构造器总是和new运算符一起使用.
 楼主| 发表于 2005-8-30 13:11:43 | 显示全部楼层
编程必备经典:Java常见问题集锦

问: 如何设置Java 2(JDK1.2)的环境变量?  

  答: Java 2安装后,需要设置PATH和JAVA_HOME环境变量.与JDK1.1不同的是:设置好JAVA_HOME环境变量后,JVM将自动搜索系统类库以及用户的当前路径。  

  Java 2环境变量的设置如下例所示:  
  Solaris平台: setenv JAVA_HOME Java2的安装路径  
  setenv PATH $JAVA_HOME/bin:${PATH}  
  Windows平台: set JAVA_HOME=Java2的安装路径  
  set PATH=$JAVA_HOMEbin;%PATH%  

  问: 哪些Java集成开发工具支持Java 2?  

  答: 目前流行的Java集成开发环境,如Inprise的JBuilder,Symantec的Visual Cafe, Sybase的PowerJ,都支持Java 2.  

  问: 如果在Netscape或IE浏览器中运行Java applet时出现了错误,如何确定错误范围?  

  答: 当java applet在浏览器中运行时,使用的是浏览器本身的缺省JVM.而不同浏览器对JDK的支持程度也不尽相同. 因此,在Netscape或IE浏览器中运行Java applet出现了错误,建议使用JDK提供的工具appletviewer或Sun公司的Hotjava浏览器来测试该applet,以确定错误的产生是与浏览器相关。
  
  如果applet在appletviewer或Hotjava中运行一切正常,则错误的产生是由于浏览 器不完全兼容JDK而引起的. 此时,解决方法可以是使用Hotjava浏览器或者安装 Sun公司的Java Plugin.  
  如果applet在Hotjava浏览器或appletviewer中运行即发生错误,则应当根据错误 提示检查applet程序.  

  问: 当用JDBC向数据库中插入数据或从数据库中提取数据时,为何有时中文字符会显示为乱码?  

  答: 这个问题的实现通常与各个JDBC driver的实现有关. 目前大多数JDBC driver采用本地编码格式来传输中文字符,例如中文字符"0x4175"会被转成"0x41"和"0x75"进行传输. 因此我们需要对JDBC driver返回的字符以及要发给JDBC driver的字符进行转换.  

  当用JDBC driver向数据库中插入数据时,需要先将Unicode转成native code; 当 JDBC driver从数据库中查询数据时,则需要将native code转换成Unicode. 下面给出了这两种转换的实现:  


  String native2Unicode(String s) {  
  if (s == null || s.length() == 0) {  

  return null;  

  }  

  byte[] buffer = new byte[s.length()];  

  for (int i = 0; i s.length(); i++) { if (s.charAt(i)>= 0x100) {  

  c = s.charAt(i);  

  byte []buf = (""+c).getBytes();  

  buffer[j++] = (char)buf[0];  

  buffer[j++] = (char)buf[1];  

  }  

  else {  

  buffer[j++] = s.charAt(i);  

  }  

  }  

  return new String(buffer, 0, j);  

  }
 楼主| 发表于 2005-8-30 13:12:27 | 显示全部楼层
 Java编写中容易搞错的一些东西
 1)instanceof:实现了某接口的类的对象也是该接口的实例;某类的对象也是该类超类的实例。

  2)native()修饰的方法没有方法体,用一个分号";"代替大括号。

  3)main不是关键字。

  4)System.exit(int value),也就是说,只要是int的,就能够使JVM退出System.exit('a');同样的是合法的。

  5)&,|能用在int和boolean上,而^(异或)只能用在int上。

  6)如果一个类和一个接口被定义在同一文件中,而且类被声明为public,则接口前什么都不能写,因为接口只能用public来修饰,而一个文件中又只能有一个public访问控制关键字。

  7)unreachable statement    下面的几种情况会出现unreachable statement

  (1)在reutrn语句后写语句。
  (2)在throw语句后写语句。
  (3)break、continue语句之后定义语句。

  8)“\u10100”//合法,相当于‘\u1010’和字符串“0”

  9)移位运算符可以用于long int char short byte

  10)类的访问控制符可以是public或什么都不加.

  11)goto是保留字但不是关键字.then什么都不是.

  12)把超类的类型强制转换后赋给子类的对象时,编译无异常,但运行时会出现异常.
发表于 2006-4-1 19:04:36 | 显示全部楼层
老大在讲一下,==和equals的区别撒!
特别是String用这两个的区别
发表于 2007-4-8 16:14:19 | 显示全部楼层
学习拉。 谢谢。
发表于 2007-7-10 15:21:59 | 显示全部楼层
    加群啊!IT牛人都在啊,报名中.........;大家快快加入,时不待人啊!
发表于 2007-9-30 18:32:14 | 显示全部楼层
谢谢!!
发表于 2007-10-13 19:52:17 | 显示全部楼层
楼主将的真精神,爽.谢谢.
发表于 2007-11-1 21:11:19 | 显示全部楼层

回复 #4 911cool 的帖子

==的意思就是判断是否指向同一个对象
equals 的意思是判断值是否相等
发表于 2007-11-7 23:14:47 | 显示全部楼层
楼主真厉害!不过我还是菜鸟了!
发表于 2007-11-12 22:37:08 | 显示全部楼层
编了那么多年的程序,回过头来还是觉得C语言最好!
发表于 2008-3-6 23:59:31 | 显示全部楼层
原帖由 jlmqq 于 2007-11-12 22:37 发表
编了那么多年的程序,回过头来还是觉得C语言最好!

同意,我都后悔没好好学C/C++
发表于 2011-3-10 12:13:00 | 显示全部楼层
学习了,谢谢楼主的讲解!
发表于 2011-4-25 12:43:42 | 显示全部楼层
谢谢楼主分享。。
发表于 2012-6-10 15:45:56 | 显示全部楼层
看了,收了,谢了
您需要登录后才可以回帖 登录 | 加入无忧

本版积分规则

小黑屋|手机版|Archiver|无忧脚本 ( 苏ICP备05080427号 )|值班电话:027-62300445   鄂公网安备 42011102000433号

GMT+8, 2017-11-25 09:48 , Processed in 0.102452 second(s), 8 queries , Gzip On, Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表