Java基础知识笔记(一:修饰词、向量、哈希表)
一、Java语言的特点(养成经常查看Java在线帮助文档的习惯)
(1)简单性:Java语言是在C和C++计算机语言的基础上进行简化和改进的一种新型计算机语言。它去掉了C和C++最难正确应用的指针和最难理解的多重继承技术等内容,通过垃圾回收机制简化了程序内存管理,统一了各种数据类型在不同操作系统平台上所占用的内存大小。
(2)网络特性:Java语言是目前对网络支持最全面,与网络关系最密切的计算机语言之一。
(3)面向对象:由于Java语言是一种新型计算机语言,没有兼容过程式计算机语言的负担,因此Java语言在面向对象的特性上比C++语言更为彻底。
(4)平台无关性/可移植性:Java语言的设计目标是让程序不用修改就可以在任何一种计算机平台上运行。
(5)稳定性:Java在编译和执行的过程中都会进行比较严格的检查,以减少错误的发生。Java语言的垃圾自动回收机制和异常处理机制在很大程度上提高了程序的稳定性。另外,Java语言的简单性也在一定程度上提高了程序的稳定性。
(6)安全性:在网络上运行的Java程序是符合网络安全协议的。在执行Java程序的过程中,Java虚拟机对程序的安全性进行检测。
(7)多线程性:这主要用来处理复杂事务或需要并行的事务。组成Java虚拟机的各个程序本身一般也采用多线程机制。采用多线程机制是提高程序运行效率的一种方法,但同时也增加了程序的设计难度。
(8)解释性:Java语言是一种解释性语言。这是Java语言的一个缺点,因为解释执行的语言一般比编译执行的语言(例如:C或者C++)的执行效率要低。
二、环境变量path和classpath的作用
运行路径(path)变量记录对的是各个运行程序所在的路径。系统根据这个变量的值来查找运行程序。
类路径(classpath)通常用来记录当前路径和J2SE类库所在的路径,这是J2SE需要的一个环境变量。
在J2SE类库中包含J2SE系统提供的各种软件包,其中包括各个类和接口等。在设置好类路径(classpath)环境变量之后,可以在程序中直接使用当前路径和J2SE类库所在路径下的各种Java软件包的类或者接口等。
三、修饰词abstract、static、final简介
(1)abstract(抽象):Java允许类、接口或者成员方法具有抽象属性,但不允许成员域或者构造方法具有抽象属性。如果在定义类修饰词列表中含有关键字abstract,则该类具有抽象属性。这时,这个类称为抽象类。无法通过抽象类的构造方法生成抽象类的实例对象。接口总是具有抽象属性。因此,不管在定义接口的接口修饰词列表中是否含有关键字abstract,该接口都具有抽象属性。如果在定义成员方法的方法修饰词列表中含有关键字abstract,则该成员方法具有抽象属性。抽象成员方法一般在定义抽象类的类体或者定义接口的接口体中定义。
抽象成员方法的定义格式与不具有抽象属性的成员方法的定义格式之间的区别:除了是否含有方法修饰词abstract之外,抽象成员方法的定义以分好结束,而且不含方法体;而不具有抽象属性的成员方法的定义在成员方法声明之后不能立即出现分号,而且必须含有方法体。
(2)static(静态):除了内部类之外,类一般不能具有静态属性。类的构造方法不能具有静态属性。类的成员域和成员方法可以具有静态属性。如果在定义成员域的域修饰词列表中加上修饰词static,则该成员域具有静态属性。如果在定义成员方法的方法修饰词列表中加上修饰词static,则该成员方法具有静态属性,称为静态成员方法。
在Java语言中,类是其实例对象的模板,同时类本身也可以看作一种对象,简称为类对象。类的静态成员隶属于该对象。可以直接通过类名访问类的静态成员域或者调用类的静态成员方法。具体形式如下:类名.静态成员域,类名.静态成员方法名(成员方法调用参数列表)。
(3)final(最终):关键字final(最终)可以用来修饰不具有抽象属性的类、类的成员域、接口的成员域以及类的不具有抽象属性的成员方法。如果在定义类的修饰词列表中含有类修饰词final,则称该类具有最终属性。
如果在定义成员域的修饰词列表中加上修饰词final,则称该成员域具有最终属性。如果该成员域同时具有最终属性和静态属性,则该成员域只能在定义时赋值,而且在此之后就不能修改该成员域的值。如果成员域具有最终属性,但不具有静态属性,则该成员域只能在定义时或者在构造方法中赋值,而且只能赋值一次。
如果在定义成员方法的方法修饰词列表中加上修饰词final,则称该成员方法具有最终属性。这时要求该成员方法不具有抽象属性。如果一个类的成员方法具有最终属性,则该成员方法不能被当前类的子类的成员方法覆盖。
四、向量简介
向量在功能上与数组类似,只是其元素个数可以改变,而且向量元素的数据类型必须是引用类型。向量的基本原理是预先给向量对象分配一定的存储空间,然后再给向量对象添加元素或设置元素值。向量对象的存储空间大小称为向量对象的容量,其单位是元素个数。向量对象的实际元素个数,称为向量对象的长度。如果向量对象的长度发生变化,当新长度超出在长度变化之前的向量对象旧容量时,向量对象的容量会自动扩大。在向量对象中还定义有一个量,称为容量增量。
向量变量的声明格式是:Vector<向量元素的数据类型> 变量名;
向量实例对象的创建方法:通常通过类java.util.Vector的构造方法创建向量对象——public Vector()可以创建向量对象,其初始容量默认值为10,容量增量为默认值0。
向量对象实例对象的操作主要有增加元素(成员方法有add、addElement、insertElement等)、修改元素(成员方法有set、setElement等)、删除元素(成员方法有clear、remove、removeElement、removeElement等)、信息查询(成员方法有contains、equals、capacity等)。
五、哈希表简介
数组和向量按顺序存储元素,因此通过元素的下标可以非常方便地获得该元素。但反过来,如果知道元素而要获得该元素的下标,则相对要困难一些,通常需要顺序进行查找。如果数组或向量已经按照某种方式排序,则可以采用二分法进行折半查找,加速查找过程。一般认为从元素查找该元素所对应的存储位置的最快方式是采用哈希表。哈希表也称作散列表。
哈希表详解链接:http://www.cnblogs.com/vamei/archive/2013/03/24/2970339.html#undefined
Java基础知识笔记(一:修饰词、向量、哈希表)的更多相关文章
- java基础知识-笔记整理
1.查看已安装jdk文件路径 CMD输入java -verbose. 2.java学习提升路线 java学习视屏地址: http://www.icoolxue.com/album/show/38 ...
- Java基础知识笔记(五:多线程的同步问题)
编写多线程程序往往是为了提高资源的利用率,或者提高程序的运行效率,或者更好地监控程序的运行过程等.多线程同步处理的目的是为了让多个线程协调地并发工作.对多线程进行同步处理可以通过同步方法和同步语句块实 ...
- Java基础知识笔记(八:集合类)
目录 1 集合类简介 2 List介绍及简单使用 2.1 LinkedList介绍及简单使用 2.2 ArrayList介绍及简单使用 2.3 Vector介绍及简单使用 2.3.1 S ...
- Java基础知识笔记(七:接口、变量作用域和参数传递)
一.接口 Java语言不允许一个子类拥有多个直接父类,即任何子类只能有一个直接父类.但允许一个类实现多个接口,即在定义类的接口名称列表中可以包含1个或多个接口名称,从而实现多重继承的特性.接口的定义格 ...
- Java基础知识笔记(二:泛型和枚举)
1.泛型 与面向对象的多态性相类似,应用泛型可以提高程序的复用性.与多态性不同的是,应用泛型可以减少数据的类型转换,从而提高代码的运行效率.泛型实际上是通过给类或接口增加类型参数实现的.不带泛型的类的 ...
- Java基础知识笔记(四:多线程基础及生命周期)
一.多线程基础 编写线程程序主要是构造线程类.构造线程类的方式主要有两种,一种是通过构造类java.lang.Thread的子类,另一种是通过构造方法实现接口java.lang.Runnable的类. ...
- JAVA基础知识笔记
1.类只能用Public修饰,不能使用protected.private修饰.也可以不加修饰符,称做友好类. 2.类的实体元素包含成员变量和方法的定义,成员变量分为实例变量和类变量(static修饰的 ...
- Java基础知识笔记(六:网络程序设计)
一.统一资源定位地址(URL) (1)网络地址 在网络上,计算机是通过网络地址标识.网络地址通常有两种表示方法,第一种表示方法通常采用4个整数组成,例如: 166.111.4.100表示某一网站服务器 ...
- Java基础知识笔记(三:文件与数据流)
一.输入流与输出流 输入流将数据从文件.标准输入或其他外部输入设备中加载到内存.输出流的作用则刚好相反,即将在内存中的数据保存到文件中,或传输给输出设备.输入流在Java语言中对应于抽象类java.i ...
随机推荐
- 使用CodeDom动态生成类型
.NET 3.5的时候加入了匿名类型这个特性,我们可以直接使用 new {name="abc"} 来直接生成一个对象.这个特性现在应用的地方很多,比如dapper的查询参数都是用匿 ...
- LINQ之延迟加载及其原理
这是LINQ(集成化查询)的继续及补充,在前面我已经介绍过,在LINQ中,一个重要的特性就是延迟加载,是指查询操作并不是在查询运算符定义的时候执行,而是在真正使用集合中的数据时才执行(如:在遍历集合时 ...
- STM32Cube Uart_DMA测试工程
1.打开软件,新建工程,选择芯片信号,这里选择 2.USART1使能选择"Asynchronous"模式: 3.配置"RCC",High ...
- WCF 框架运行时类图
本文画出了 WCF 框架运行时的重点类之间的类关系图. Binding 一个 Binding 由多个 BindingElement 组成.BindingElement 作为主要的扩展点.每一个 Bin ...
- repeater三级嵌套绑定
<asp:Repeater ID="rpt1" runat="server" onitemdatabound="rpt1_ItemDataBou ...
- android studio 1.0 开发 ndk 调用 c++ so库
一个没用过java和安卓的人使用android studio开发带c++ so库的安卓程序用例(以ndk的hello-jni为例),对于不熟悉java和安卓的人来说这个很花时间,希望通过这篇文章帮助跟 ...
- SpringMvc面试题
f-sm-1. 讲下SpringMvc和Struts1,Struts2的比较的优势 性能上Struts1>SpringMvc>Struts2 开发速度上SpringMvc和Struts2差 ...
- MongoDB常用操作--集合2
1.查询集合中的文档,可以使用命令 db.集合名称.find({条件}),或者使用 db.集合名称.findOne() 查询第一个文档 2.查询集合中的文档,返回某些特定的键值 3.查询集合中的文档 ...
- browserify学习总结
前言 在未接触browserify,虽然我知道它是一个前端构建工具,但还是有几个疑问: 1. browserify出现的日期? 2. 能构建哪些文件? 3. 附加的browserify代码体积是多大? ...
- request.getParameter(“参数名”) 中文乱码解决方法
今天浏览项目时候,遇到一个问题,页面用${requestScope.参数名 }获取的值是乱码,然后搜了一下,最后说是编码的问题,附上查找的结果: 在Java 开发中,如果框架搭建的不完善或者初学者在学 ...