|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
C++编译的是本地码,优点是启动快,而且可以精确控制资源因此可以开发很高效的程序.缺点是编程麻烦,而且容易留下安全隐患.跨平台靠源代码在各个平台间分别编译(一处编写到处编译)编程《CoreJava2VolumeI:Fundamentals》(原书第5版)
机器产业出书社
之前看过的关于Java的工具都很琐屑,感到有需要从头进修一下Java的一些基本常识,特记。
第1章Java简介
1、我们以为Java的各种上风在它使用于新型设备或新使用范畴中才干表现,而不是用它来重写那些已存在的使用程序。
///所谓各领风流十来年,大抵就是这个意义;同时,平常地对照言语之间的好坏是没成心义的
2、复杂的说,面向对象的程序计划是把重点放在数据(即是对象)和对象接口上的一个编程手艺。以木工为例,一个
“面向对象”的木工起首会体贴他要打造的椅子,然后才是打造这椅子的工具;而一个“非面向对象”的木工会起首思索他的工具。
///只要头脑提上往,才能够改良办事的体例。可骇的是:常常在利用着面向对象的工具,却利用着面向历程的头脑
第2章Java编程情况
1、一个复杂而风趣的界面程序,显现.gif图象
///ImageViewer.java
importjava.awt.*;
importjava.awt.event.*;
importjava.awt.image.*;
importjava.io.*;
importjavax.swing.*;
publicclassImageViewer{
publicstaticvoidmain(String[]args){
JFrameframe=newImageViewerFrame();
frame.setTitle("ImageViewer");
intw=320,h=400;
DimensionScreenSize=Toolkit.getDefaultToolkit().getScreenSize();
frame.setBounds((int)((ScreenSize.width-w)/2),(int)((ScreenSize.height-h)/2),w,h);
frame.setSize(w,h);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}
classImageViewerFrameextendsJFrame{
publicImageViewerFrame(){
//setmenu
JMenuBarmenuBar=newJMenuBar();
setJMenuBar(menuBar);
JMenumenu=newJMenu("File");
menuBar.add(menu);
JMenuItemopenItem=newJMenuItem("Open");
menu.add(openItem);
openItem.addActionListener(newFileOpenListener());
JMenuItemexitItem=newJMenuItem("Exit");
menu.add(exitItem);
exitItem.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventevent){System.exit(0);}
});
//usealabeltodisplaytheiamges
label=newJLabel();
ContainercontentPane=getContentPane();
contentPane.add(label,"Center");
}
privateclassFileOpenListenerimplementsActionListener{
publicvoidactionPerformed(ActionEventevt){
//setupfilechooser
JFileChooserchooser=newJFileChooser();
chooser.setCurrentDirectory(newFile("."));
//acceptallfilesendingwith.gif
chooser.setFileFilter(newjavax.swing.filechooser.FileFilter(){
publicbooleanaccept(Filef){
returnf.getName().toLowerCase().endsWith(".gif")||f.isDirectory();
}
publicStringgetDescription(){
return"GIFImages";
}
});
//showfilechooserdialog
intr=chooser.showOpenDialog(ImageViewerFrame.this);
//ifimagefileaccepted,setitasiconofthelabel
//只要到此时,才要完成我们的目标:显现图片,后面满是一些筹办事情!
if(r==JFileChooser.APPROVE_OPTION){
Stringname=chooser.getSelectedFile().getPath();
label.setIcon(newImageIcon(name));
}
}
}
privateJLabellabel;
}
第3章Java基础编程布局
///略
第4章对象和类
1、OOP中的对象有三个次要特征:
A)对象的举动
B)对象的形态
C)对象的标识符
///对照好了解
2、类之间的干系
A)依附USES-A
B)聚合HAS-A
C)承继IS-A
3、注重:我们接纳的作风是类的办法在前,字段在后,如许做大概会在某种水平上勉励起首体贴类的接口,儿不是体贴其
完成。
///一向对照烦闷为何字段界说在后,本来云云!
4、静态字段和办法///此处的字段是指类外部的属性
A)假如把一个字段界说为static,那末,一个类中只要一个这类字段。
///我的了解:假如用static界说一个类的字段,那末这个字段属于类,而不是属于对象。一切的对象将操纵一个地点。
B)静态变量很少见,静态常量倒是很广泛的
如:publicclassMath{
//...
publicstaticfinaldoublePI=3.14159265358979323846;
//...
}
publicclassSystem{
//...
publicstaticfinalPrintStreamout=...;
}
C)静态办法
我们能够把静态办法看做是没有this参数的办法
我们能够在以下两种情形下利用静态办法:
(1)当一个办法不必要会见对象形态时;
(2)当一个办法只必要会见类中的静态办法时
静态办法另有另外一种罕见的用处:
如:NumberFormat.getNumberInstance()
这类办法被称作工场办法factorymethod
5、java程序计划言语老是利用传值挪用。这意味着办法失掉是一切参数值的一个拷贝。特别是,办法不克不及修正传送给它的
任何参数变量内容。
///第一次次要到这点,可是,随后,作者的确如许写的:
一个办法不成能改动基础范例的参数,而关于对象参数来讲则分歧。我们能够很简单地――实践上长短常广泛――完成改动一个
对象参数形态的办法。缘故原由很复杂。办法失掉对对象援用的一个拷贝,而原对象变量和此拷贝都指向统一个对象。
///Employee.java
publicclassEmployee{
Stringname;
doublesalary;
publicEmployee(Stringname){
this.name=name;
this.salary=1000.0;
}
publicdoublegetSalary(){
returnsalary;
}
publicstaticvoidtriple(Employeeemp){
emp.salary*=3;
}
publicstaticvoidmain(String[]args){
Employeefeng=newEmployee("Feng");
Employeeyu=newEmployee("Yu");
triple(feng);//workcorrectly!
System.out.println("Fengssalary:"+feng.getSalary());
System.out.println("Yussalary:"+yu.getSalary());
}
}
///可是,随后作者又说:
有些程序员宣称Java程序计划言语对对象利用援用挪用。但是这类了解是毛病的。经由过程一个例子来讲明:
///注重:例子中的谁人swap()并没有如预期的那样起感化
publicclassEmployee{
Stringname;
publicEmployee(Stringname){
this.name=name;
}
publicStringgetName(){
returnname;
}
publicstaticvoidswap(Employeex,Employeey){
Employeet=x;
x=y;
y=t;
}
publicstaticvoidmain(String[]args){
Employeefeng=newEmployee("Feng");
Employeeyu=newEmployee("Yu");
swap(feng,yu);//cannotwork
System.out.println(feng.getName());
System.out.println(yu.getName());
}
}
///关于办法参数,作者归结以下:
A)办法不克不及修正基础范例的参数
B)办法能够改动对象参数的形态
C)办法不克不及使一个对象参数指向一个新的对象
6、机关函数
当类被第一次加载的时分,举行静态初始化。静态字段被初始化为0,false或null,除非显式的赋值。一切静态
字段初始化语句或初始化块依照在类声明中呈现的序次顺次被实行。
上面是一个没有利用main办法的程序
///Hello.java
publicclassHello{
static{
System.out.println("HelloWorld!");
System.exit(0);
}
}
7、文档正文
正文以/**开首,*/停止,包括标签(@author,@param,@see等)和自在文本(可包括HTML标志)
类正文:一样平常放到放到import语句以后,在类界说之前
8、类计划的技能
1)永久坚持数据的公有///这必要从有用动身,而不是从完成体例动身
2)永久初始化数据///不要依托默许值
3)不要在一个类中利用太多基础范例
///对照好了解,用Address类来取代Employee类中的上面字段:
privateStringprovince;
privateStringcity;
privateStringstreet;
privateintzip;
4)不是一切的字段都必要本人的字段会见器和调治器SetP()GetP()
5)用尺度情势对类界说:public,protected,private;每部分:实例办法,静态办法,实例字段,静态字段
6)把有太多职责的类分化
7)使类和办法的名字反应它们的职责
第5章承继
1、写了一个承继实例:
EMPLOYEE的薪水只是基础人为;MANAGER的薪水为基础人为+奖金
//ManagerT.java
classEmployee{
publicEmployee(Stringname){
this.name=name;
}
publicdoublegetSalary(){
returnbasicSalary;
}
publicvoidshowInfo(){
System.out.println("name:"+name);
System.out.println("salary:"+getSalary());
}
privateStringname="";
privatedoublebasicSalary=1000.0;
}
classManagerextendsEmployee{
publicManager(Stringname){
super(name);//利用super能够挪用父类
}
publicvoidsetBonus(doubleb){
bonus=b;
}
publicdoublegetSalary(){
setBonus(126.0);
returnsuper.getSalary()+bonus;
}
privatedoublebonus;
}
publicclassManagerT{
publicstaticvoidmain(String[]args){
Employeeemp=newEmployee("feng");
emp.showInfo();
Managerman1=newManager("wu");
man1.showInfo();
Employeeman2=newManager("song");
man2.showInfo();
}
}
2、
final一个类:不成承继;
final一个办法:该办法不成被重载
设置为final有两个缘故原由:A)效力。静态绑定比静态绑定开支要年夜。B)平安。
3、笼统类,abstract界说
为了更明白,划定具有一个或多个笼统办法的类自己必需界说为abstract
在JAVA言语中,笼统办法长短常主要的观点,在“接口”里,会大批的碰到。
///JAVA会见的把持标记小结:
private:只对本类可见;
public:对统统可见;
protected:对本包和子类可见;
[缺省]:对本包可见///团体感到最好不要用缺省
TOBECONTINUED
C#是不行的,比如说美国的航天飞船里就有java开发的程序以上是我的愚见,其实不管那种语言,你学好了,都能找到好的工作, |
|