Java基础知识点总结

匿名 (未验证) 提交于 2019-12-02 21:53:52

1995MicroSystems公司

安装JDK后产生如下目录:

\bin目录:Java开发工具,包括Java编译器、解释器等
\demo目录:一些实例程序
\lib目录:Java开发类库
\jre目录:Java运行环境,包括Java虚拟机、运行类库等

JDK常用工具:
Javac
Java编译器,用来将javaBytecode
Java
Java解释器,执行已经转换成Bytecodejava应用程序。
Jdb
Java调试器, 用来调试java程序。


设置环境变量:(有了集成开发环境,现已不再使用)
<INSTALL_DIR>\bin;

设置Java的Path,目的是让Java程序设计者在任何环境都可以运行SDK\bin目录下的工具文件,如:javac,java, javadoc等

CLASSPATH= . ; <Other_Applications_Dir>;

设置classpath的目的是让Java虚拟机找到所需要的类库

体现Java跨平台特性

Java语言特点
Java语言简单
Java 是一种面向对象的语言。和C++类似,具有面向对象的基本特征。
平台无关性 (Write Once, Run Anywhere
Java既是编译型语言.class,也是解释性语言.Java
Java 分布式
Java是安全和可靠的

编译型语言在程序执行之前,有一个单独的编译过程,将程序翻译成机器语言,以后执行这个程序的时候,就不用再进行翻译了。
解释型语言,是在运行的时候将程序翻译成机器语言,所以运行速度相对于编译型语言要慢。


Eclipse是一个开源,基于Java的开发环境Integrated Development Environment) IDE, 是一个功能完整并成熟的软件,由IBM2001年首次推出。
Eclipse 是一个框架和一组被称为平台核心的服务程序,用于通过插件组建构建开发环境。
Java程序书写规范
;
ioawt;
类名第一个字母要大写: HelloWorldApp;
变量名第一个字母要小写: myName;方法名第一个字母要小写: setName;

类和对象

含义

{姓名,年龄},读者对象{"张三",18}
注意

classTV{  //电视机类   private int volume, channel;   public void setCH(int n)   {       channel=n;    } }  TVt=new TV(); //创建对象
类描述了一组有相同特性(属性)和相同行为(方法)的对象。
对象是类的实例化
对象是面向对象思想的两个核心概念。
封装
封装是把过程和数据包围起来,对数据的访问只能通过已定义的接口。
作用
封装机制让用户操作对象更简单,让对象更安全、更易于维护、更易于重用。
隐藏细节,可简化认知;
封装,迫使用户按照设计者要求来使用对象;
借助对象使用接口来操控对象,更易于重用和维护
继承
含义:子类重用父类的全部属性和行为
继承是一种重用机制
作用
把类家族的特征分散于类家族的层次结构中,有效控制了单个类的规模。
多态

两种不同形式的多态

与静态绑定有关

=new藏獒()

.(主人气味欢快、愉悦的反应

.(老虎气味充满警戒、敌意的反应

与动态绑定有关

;

=new藏獒();哈利.护家();

=new哈巴狗();哈利.护家

面向过程
a.用自顶向下逐步求精策略指导开发过程;
b.程序由若干模块(或构件)组装而成;
c.构成模块的每一子程序只能包含顺序、分支、选择等三种结构,且每种结构只允许单入口和单出口
面向对象
模拟,即软件系统是对现实系统的模拟换言之,其思想“来源于生活,服务于生活”。
方法
特征:
封装
继承
多态

类结构的优点
将数据(属性)与数据的操作(方法)打包成整体,对象以整体形式呈现。

生成一个对象格式如下:

classnameobjectname= new classname();

其作用是在内存里为对象分配内存空间

对象的状态本质上等同于对象的值,任何程序的执行,其终极目标是处理数据。

构造方法的特点
n一种和类同名的特殊方法,可以有多个;
n用来完成对象的初始化工作;
n无返回类型,无修饰符void,通常被声明为公有的(public);
n可以有任意多个参数;
n不能在程序中显式的调用,在生成一个对象时,系统会自动调用该类的构造方法;
n如果没有写构造方法,系统会自动提供一个默认构造方法。
n但是如果有构造方法,系统就不会再提供默认构造方法。

当一个对象被创建时,会对其中各种类型的成员变量自动进行初始化赋值。

对象的内存管理
内存空间的自动管理模式:基于栈的内存管理

栈特征:后进先出

函数中定义的所有变量,无论是基本类型还是引用类型。

缺点:按照最大可能进行空间分配,导致空间利用低效。

内存空间的手动管理模式:基于堆的内存管理

特征:一种无结构的内存区域

程序给出申请或者释放内存单元的指令,可实现内存单元的按需分配或者释放

new是申请空间的指令

堆内存管理缺陷与Java解决策略

String s1=new String(“abc”); String s2=new String(“xyz”); S1=s2; //执行后字符串abc的对象成为内存垃圾,被泄露掉 
对象清除
Java是通过垃圾搜集器自动回收无用的对象所占的内存。System.gc();
C++是通过析构函数
垃圾回收机制算法:

-清扫,分代式收集等

System.gc();Runtime.gc

不会立即执行,Java是多线程,只有到特定时间才释放内存

访问数据成员及方法

其格式如下:

访问数据成员:对象. 属性名


参数传递
参数的类型可以是基本数据类型,也可以是引用(类)类型。
Java语言中,基本数据类型作为参数均采用传值的方式完成。
引用类型变量作为参数传递时,采用的是引用传递(passing-by-reference)的方式,在方法体中对形参的改动将会影响到实参。
对象输出
Java可以把对象像基本数据类型一样,使用System.out.println直接输出到屏幕。
System.out.println(ipad)语句就等价于System.out.println(ipad.toString())
实际上Java的所有类都有一个默认的toString()
如果直接调用默认的toString(),返回结果形式为:

类的名字@对象的

重写toString()方法的实现部分,“覆盖”掉从Object继承来的toString(),将对象的内容转换为字符串

public class Product {  	     int ID; 	     String name; 	     String categories;  	     double productPrice;  	     Product(int id, String nm, String categ,double price) 	     { 	    	 ID =id; 	    	 name=nm; 	    	 categories = categ; 	    	 productPrice = price; 	     } 	    Product(){}   	     	    public String toString(){ 	    	return ("Product "+ ID+","+ name + ","+categories+","+productPrice); 	    }	        }
public class Sx { 	public static void main(String args[]){ 		Product iphone = new Product(); 		Product ipad = new Product(10,"ipad2","computer",5000); 		Product macbook = new Product(11,"apple","computer",9999); 			  			  			 		System.out.println(ipad); 		System.out.println(macbook); 		System.out.println(iphone); 	} }
对象创建clone

封装性:对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法来实现对内部信息的操作与访问。
封装性实现机制
o限定了成员变量(属性)与方法(行为)的访问权限
oJava中声明类的成员变量与方法的语法如下:

[修饰符]publicprotectedprivate

final

类的定义格式如下:

[访问控制修饰符] [继承修饰符] classclassname

{

[访问控制修饰符][全局修饰符] [继承修饰符]成员变量描述对象的属性

classname()//构造函数

访问控制修饰符] [全局修饰 符] [类型修饰符]返回类型

成员方法()//描述对象的行为操作

}

成员变量的修饰符

[访问控制修饰符][全局修饰符] [继承修饰符]成员变量

实例:

publicint

[访问控制修饰符

[全局修饰符

[继承修饰符

成员方法的修饰符

访问控制修饰符] [全局修饰 符] [类型修饰符]成员方法()

实例:

publicstatic  final  int  getAge(){     return age; }

[访问控制修饰符

[全局修饰符

[继承修饰符

的修饰符

[访问控制修饰符] [类型修饰符classclassname

}

实例:

public   final class  dog{     … }

[访问控制修饰符

[继承修饰符

o成员变量或方法所在的类及其子类,同一个包内的类,不同包中的类都可以访问。
o成员变量或方法所在的类及其子类,同一个包内的类可以访问。不同包中的类不能访问
o[只能在成员变量或方法所在的类中访问,其他都不能访问
o

o所修饰的成员变量为静态变量(类变量),所修饰的方法为静态方法(类方法)。

特性:

1.只属于类,不属于任何实例,静态变量的值保存在类的内存中的公共存储单元中,而不是保存在某个对象所在的内存单元中

2、可以只通过类名以及”.”

3、静态方法能访问静态的成员变量,也能调用静态的方法,但是不能访问非静态成员变量,也不能调用非静态方法。但是非静态成员方法能访问非静态成员变量,也能调用非静态方法,同时也能访问静态的成员变量和调用静态的方法

类的访问控制只有public(公共类)及包(默认类)两种,没有私有。

oΪfinal

修饰的成员

所修饰的成员方法不能被子类重写;

修饰的类不能被子类继承。

oΪabstract

修饰成员方法必须由子类重写

修饰的类不能被实例化

this指针
每一个方法内都有一个特殊的指针,指向调用该方法的当前对象
this 关键字只能在方法内部使用
this指针的用法
对象,访问对象的数据
返回值使用,当需要返回一个对象时,就可以在return语句里使用this
构造方法
Java允许把多个类收集在一起成为一组,称作包(package)。包便于组织任务,以及使自己的任务和其他人提供的代码库相分离
通俗来说就是目录
每一个类都属于一个包
同一个包里的类可以相互调用
不同包里的类调用时需要import入语句必须放在文件首,格式如下:

mportpath.to.package.foo.Foo

path.to.package.foo.*;

基础类库
Java提供了用于语言开发的类库,称为Java基础类库(JFCJava Foundational Class) ,也称应用程序编程接口(APIApplication Programming Interface),分别放在不同的包中。

Java提供的常用包

面向对象的三个特征――封装、继承、多态
在现有类的基础上创建新类,在其中添加新代码,这种方法称为继承
在新类中使用其他类的对象。即新类由多种类的对象组成,这种方法称为组合
继承的语法
class childClassextendsparentClass {   //类体 }
当创建一个类时,总是在继承,除非已明确指出从其他类中继承,否则就是隐式地从Java的根类Object进行继承
通过继承,可以根据已有类来定义新类,新类拥有已有类的所有功能。
父类(super class)是所有子类(derived class)的公共属性及方法的集合,子类则是父类的特殊化
Java只支持类的单继承,每个子类只能有一个直接父类

父类(baseclass)

(derived-class)

继承所有祖先的状态和行为
子类可以增加变量和方法
子类也可以覆盖(override)继承的方法

继承特点
子类只继承父类中非private的数据成员。
类只继承父类中非private的成员方法
子类不能直接访问从父类中继承私有属性及方法,但可使用公有(及保护)方法进行访问。
子类中声明了与父类中相同的成员变量名,则从父类继承的变量将被隐藏
子类的成员方法和父类的成员方法同名时,父类的成员方法被子类的成员方法覆盖(Override)

重写
方法覆盖即指在子类中重新定义父类中已有的方法

通过类的继承,子类可以修改,扩展从父类中继承的方法。

重写规则:

1.当父类中方法为final时,不能被重写
2.对于从父类继承的抽象方法,子类如果不是抽象类就必须重写该抽象方法。
3.当父类中方法为private时,子类不能使用父类该方法

4. 当父类中方法为public时,子类中的重写方法只能为public

原因java中规定重写方法不能比被重写的方法有着更严格的访问权限。

重载

重载:同一个类中有两个或者以上的方法共享一个方法名,但是参数不同。

重写”与“重载”是两个完全不同的概念

在一个类中允许重写、重载同时存在。

super关键字

可以用super来引用父类中的方法、变量及构造方法

super必须是子类构造方法的第一条语句

public void speedup() {        super.speedup(); //通过Super关键字调用父类的speedup()        speed = speed +10;        System.out.println("So fast!, my speed is:"+speed+"now"); } 
继承关系下的构造方法

类不能继承父类的构造函数,只能通过super关键字在子类的构造函数中调用父类的构造函数。
Super函数必须为构造函数的第一条语句
Java中每一个构造函数都必须调用父类的构造函数作为第1条语句,当子类的构造函数中没有明确的使用super关键字时,如果没有明确指明调用父类的构造方法,Java会自动插入对父类默认构造方法(无参的构造方法)的调用
this关键字

指向自己的对象,可以访问自己的属性与方法

(1)this调用本类中的属性与方法,也就是类中的成员变量与方法;

(2)this调用本类中的其他构造方法,调用时要放在构造方法的首行;

(3)this返回类对象的引用


引用成员变量与方法

返回类的引用

public class Product {      int ID;      String name;      String categories;       double productPrice;      Product increment() {          i++;         return this;      } }
Java不支持多继承

对象的类型转换

子类对象可以自动转换成父类
如果一个父类对象的引用指向子类的对象,那么该对象只能使用父类的成员变量与方法,而不能调用子类的新增的成员变量与方法。
instanceof
终结类与终结方法
final修饰符修饰的类和方法
终结类不能被继承
终结方法不能被当前类的子类重写

抽象类和抽象方法

抽象类:用abstract关键字来修饰一个类时,该类叫做抽象类
抽象类不能创建对象;
它只能作为其它类的父类,这一点与final类正好相反。
抽象方法:用abstract来修饰一个方法时,该方法叫做抽象方法。
抽象方法必须被重写;
抽象方法只有声明,不能有实现;
含有抽象方法的类必然是抽象类。





易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!