java的一些基础知识
2014-03-30 18:21
288 查看
面向对象语言的产生是由于发现面向过程语言(例如C)在处理大型复杂问题时有些力不从心。为什么?
对现实世界建模的无能为力
使用过程语言对现实世界问题进行抽象及概念化十分困难:方法执行任务,而数据存储信息,但现实中的事物往往是对二者同时进行操作。例如,炉子上自动调温器需要做的工作是:打开或关闭加热开关同时显示温度信息(现在的温度和所希望的温度)
如果用过程语言来写一个自动调温器控制程序,可能会用两个方法fuenace_on()和furnace_off(),即炉开和炉闭来完成,还会有连个全局变量currentTemp和desiredTemp,即现在的温度(由调温器提供)和希望的温度(由用户设置)。然而这些方法和变量并没有形成和编程对象,在程序中不会出现热河可以称之为自动调温器的单元。这个单元的唯一概念仅存在于程序员的脑海中。
对于大型的程序,有可能包括上百个类似调温器的实体。这时候程序将变得极为混乱。因此需要一种可以更好地将程序中的事物与现实世界中的事物相匹配的语言
面向过程的语言当中,数据可以使一个特定方法的局部变量,也可以是所有方法都可以存取的全局变量,就是无法(至少没有灵活的方法)规定一个变量是允许某些方法寻去而不允许另外一些方法存取。如果一个变量想要被一个以上的方法存取,它必须是全局变量。但是全局变量会在不经意的情况下被程序中的任何一个方法存取,这就导致了编程错误。因此需要一种可以精调数据的可访问性的办法:使数据对应该存取它的方法可用,而对其他方法来说是隐藏的。
面向对象编程思想的关键就是:一个对象同时包括方法和变量。
类是针对一个或多个对象的说明(或蓝图)。
创建对象
java中创建对象使用new关键字。在创建对象的同时,需要将一个引用存储到一个具有合适的类型的变量中。引用时一个对象的地址。
例如:创建两个新的人对象,并将对它们的引用存储在如下两个变量中:
Person p1,p2;//创建两个引用(只是创建了一个放置某一个对象的存储地址的空间;这一点和c++不同,c++实际上创建了一个对象,它流出了所有这个对象的数据的空间)
p1=new Person();//创建两个对象,并将引用存储在这两个变量中
p2=new Person();
java中只会对用new创建的对象自动进行垃圾回收
java中当使用相等操作符(==)来判断类时,实际上判断的是类的引用是否一致,即它们是否指的是同一个对象。如果在java中要判断两个对象中是否含有相同的数据,则要使用Object类中的equals()方法。类能够直接使用这个方法是因为所有类都是从Object类派生来的。
java的基本数据类型有:boolean,byte,char,short,int,long,float,double。所有这几个类型之外的都是类,例如String,数组等
小 结
数据结构是指数据在计算机内存空间中或磁盘中的组织形式。
正确的数据结构会使程序的效率大大提高。
数据结构的例子有数组、栈和链表。
算法是完成特定任务的过程。
在java中,算法经常通过类的方法实现。
一些数据结构的用途是作为程序员的工具:它们帮助执行算法。
其他数据结构可以模拟现实世界中的情况,例如城市之间的电话线网。
反射
反射就是把Java类中的各种成分映射成相应的Java类。
注解
注解就相当于一个你的源程序中要调用的一个类,要在源程序中应用某个注解,得先准备好了这个注解类
泛型
泛型是提供给javac编译器使用的,可以限定集合中的输入类型,让编译器挡住源程序中的非法输入,编译器编译带类型说明的集合时会去除掉“类型信息”,例如:
List<String> l1=new ArrayList<>(); List<Integer> l2=new ArrayList<>(); System.out.println(l1.getClass()==l2.getClass());运行代码输出结果为true。因为不管泛型的实际类型参数是什么,对于Java来说,它们依然被当成同一个类处理,系统中并不会真正生成泛型类
对现实世界建模的无能为力
使用过程语言对现实世界问题进行抽象及概念化十分困难:方法执行任务,而数据存储信息,但现实中的事物往往是对二者同时进行操作。例如,炉子上自动调温器需要做的工作是:打开或关闭加热开关同时显示温度信息(现在的温度和所希望的温度)
如果用过程语言来写一个自动调温器控制程序,可能会用两个方法fuenace_on()和furnace_off(),即炉开和炉闭来完成,还会有连个全局变量currentTemp和desiredTemp,即现在的温度(由调温器提供)和希望的温度(由用户设置)。然而这些方法和变量并没有形成和编程对象,在程序中不会出现热河可以称之为自动调温器的单元。这个单元的唯一概念仅存在于程序员的脑海中。
对于大型的程序,有可能包括上百个类似调温器的实体。这时候程序将变得极为混乱。因此需要一种可以更好地将程序中的事物与现实世界中的事物相匹配的语言
面向过程的语言当中,数据可以使一个特定方法的局部变量,也可以是所有方法都可以存取的全局变量,就是无法(至少没有灵活的方法)规定一个变量是允许某些方法寻去而不允许另外一些方法存取。如果一个变量想要被一个以上的方法存取,它必须是全局变量。但是全局变量会在不经意的情况下被程序中的任何一个方法存取,这就导致了编程错误。因此需要一种可以精调数据的可访问性的办法:使数据对应该存取它的方法可用,而对其他方法来说是隐藏的。
面向对象编程思想的关键就是:一个对象同时包括方法和变量。
类是针对一个或多个对象的说明(或蓝图)。
创建对象
java中创建对象使用new关键字。在创建对象的同时,需要将一个引用存储到一个具有合适的类型的变量中。引用时一个对象的地址。
例如:创建两个新的人对象,并将对它们的引用存储在如下两个变量中:
Person p1,p2;//创建两个引用(只是创建了一个放置某一个对象的存储地址的空间;这一点和c++不同,c++实际上创建了一个对象,它流出了所有这个对象的数据的空间)
p1=new Person();//创建两个对象,并将引用存储在这两个变量中
p2=new Person();
java中只会对用new创建的对象自动进行垃圾回收
java中当使用相等操作符(==)来判断类时,实际上判断的是类的引用是否一致,即它们是否指的是同一个对象。如果在java中要判断两个对象中是否含有相同的数据,则要使用Object类中的equals()方法。类能够直接使用这个方法是因为所有类都是从Object类派生来的。
java的基本数据类型有:boolean,byte,char,short,int,long,float,double。所有这几个类型之外的都是类,例如String,数组等
小 结
数据结构是指数据在计算机内存空间中或磁盘中的组织形式。
正确的数据结构会使程序的效率大大提高。
数据结构的例子有数组、栈和链表。
算法是完成特定任务的过程。
在java中,算法经常通过类的方法实现。
一些数据结构的用途是作为程序员的工具:它们帮助执行算法。
其他数据结构可以模拟现实世界中的情况,例如城市之间的电话线网。
反射
反射就是把Java类中的各种成分映射成相应的Java类。
注解
注解就相当于一个你的源程序中要调用的一个类,要在源程序中应用某个注解,得先准备好了这个注解类
泛型
泛型是提供给javac编译器使用的,可以限定集合中的输入类型,让编译器挡住源程序中的非法输入,编译器编译带类型说明的集合时会去除掉“类型信息”,例如:
List<String> l1=new ArrayList<>(); List<Integer> l2=new ArrayList<>(); System.out.println(l1.getClass()==l2.getClass());运行代码输出结果为true。因为不管泛型的实际类型参数是什么,对于Java来说,它们依然被当成同一个类处理,系统中并不会真正生成泛型类