ITPub博客

首页 > 应用开发 > Java > Java基础总结

Java基础总结

原创 Java 作者:DBA_建瑾 时间:2014-09-08 03:13:36 1 删除 编辑

Java基础总结


JVM
:(Java Virtual Machine)即Java虚拟机;所谓Java虚拟机,就是可以运行Java代码的假想计算机。我们只需要根据Java虚拟机的规范,将其安装到某台特定的计算机上,就可以使编译过的Java代码达到“编写一次,到处运行”的目的。


JDK
的安装,环境变量的配置

安装JDK时只要按照安装程序一直“下一步”即可,也可以选择性的安装J2SE Runtime Environment。

配置JDK(Java Development Kits)环境变量两种方法:

第一种:直接修改path路径;

第二种:在系统变量中新建JAVA-HOME环境变量;在环境变量路径值为:“%JAVA-HOME%\bin”;-

这两种方法其中第一种较为常用,第二种主要用于切换版本和TOMCAT的软件配置;


Classpath
的作用

它的主要作用是寻找.class文件;

第一种:在系统变量中新建一个系统变量,命名为:classpath,并把变量值设为:.;D:\code;

第二种:在Dos环境下直接修改,但是只对当前窗口有效,很少用;


JAVA
数据类型

首先java数据类型包括基本数据类型和引用型数据类型,其中,基本数据类型又包括三大类,分别为:数值型、字符型(char)和布尔型(boolean),而其中的数值型又包括了两种类型,分别为整数型(byte.short.int.long)和浮点型(float.double);其次,引用数据类型又包括了三大类分别是:类(class)、接口(interface)和数组(queue).


JAVA
基本运算符号

首先,java基本运算符号分为:算术运算符、关系运算符、布尔逻辑运算符、位运算符、赋值运算符、字符串连接运算符六种;

下面对这六种运算符进行详细的解释:

算术运算符包括:+ — * /   %  ++   --

关系运算符包括:>  <  >=  <= ==  !=

布尔逻辑运算符: ! &&   | |

位运算符:& | ^ ~ << >> >>>

赋值运算符:= 扩展赋值运算符:+=   —=  *=  /=

字符串连接运算符:+


JAVA
程序基本控制语句

java基本控制语句主要有分支语句和循环语句;

首先说一下分支语句,分支语句中主要说的是if语句和switch语句,在分支语句中主要有三种形式:(1)if(boolean类型表达式)语句A;功能:当表达式为真时执行语句A,否则跳过。(2)if(boolean类型表达式)语句A  else 语句B,功能是,先执行if中布尔表达式的值,如果满足便执行语句A否则执行else中的部分;(3)if(boolean类型表达式1)语句1

else (boolean类型表达式2)语句2

else (boolean类型表达式3)语句3

else   语句n;

它的功能是先执行if中的boolean表达式值,满足就执行语句1,不满足就执行else,判断else语句中的boolean表达式中的值,满足便执行语句2;以此类推,若没有满足条件的,就执行语句n;

switch语句:switch(表达式)

{    case const1:

         statementl

             break;

..........

}

最后说一下循环语句,循环语句中主要包含三种循环,while、for和do-while循环,其中do-while不经常使用;

先介绍while循环:

1、 while循环是“当“型循环。

2、 形式:while(boolean表达式) 语句

3、 执行过程:先判断表达式的值,若为true,则执行其后面的语句,然后再判断条件并反复执行,直到条件不成立为止。

4、 在不知道要循环多少次时使用while循环。

5、 While后面一般为语句块,即加:{ }

语句中应有使表达式趋于false的语句,否则会出现死循环。

在介绍一下for循环

1、 形式

for(表达式1;表达式2;表达式3) 语句

2、 执行过程

首先计算表达式1,接着执行表达式2。若表达式2的值为true 则执行语句,接着执行表达式三,再判断表达式2的值。依此重复下去,直到表达式2的值为false。

3. 表达式2一般不可省略,否则为无限循环。表达式3亦可省略,但在循环体内必须有语句改变循环变量的值,以使表达式2在某一时刻值为false而正常结束循环。也可以同时省略表达式1和表达式3


数组的概念及使用

1、数组是多个相同类型数据的组合,实现对这些数据的统一管理。

2、数组属于引用类型,数组型数据是对象(object),数组中的每个元素相当于该对象的成员变量。

3、数组中的元素可以是任意数据类型,包括基本数据类型和引用数据类型。

静态初始化:即在声明数组时直接指定数组元素。例如:Int [] a = {4,5,6,7,8,9};

动态初始化:即在声明数组时不指定数组元素,而是在之后动态指定。例如:

int [] a=new int[10];for(int i=0;i<10;i++){ a[i]=i; }


方法的声明及使用

定义方法:访问权限 返回值类型 方法名字(参数列表){方法体}

(1)     方法的返回值类型要和return返回值类型一致;

(2)     方法调用时,实参的类型,个数,顺序要和形参类型方法中的保持一致;

(3)     在方法调用时,方法名字要和定义时的方法名字保持一致;


方法的重载

方法的重载是多态的实现手段之一,解决了命名空间问题(在类中实现相同功能的方法)

满足条件:1、方法名相同  2、方法的参数类型不同、参数个数不同或参数类型顺序不同  3、返回值类型可以相同也可以不同。(与返回值类型无关)


面向对象的概念

面向对象有三大特征:封装、继承和多态,这是面向对象的主要好处;


类的定义

定义:修饰符 class 类名{

        成员变量;

方法

}


对象的产生与使用

Java语言中使用关键字new调用构造方法来创建新对象。

类名 对象名 =  new 类名();

通过对象调用方法或修改属性值。


匿名对象

不定义对象的引用名称,而直接调用方法,我们叫这样的对象是匿名对象。只能一次性使用。

使用匿名对象的好处是节省了内存空间(Java的垃圾回收机制)

如果对一个对象需要进行一次调用,可以使用匿名对象。

常用匿名对象作为一个实参传给方法调用,用完之后抛弃


实现类的封装性

面向对象的特征之一(封装、继承、多态是面向对象的三大特征)

封装主要采用private关键字实现类的封装性;,提供setXxx()和get Xxx()方法进行设置和返回属性值,进而达到对私有变量的设置;


构造方法的定义与使用

构造方法可以和普通方法比较来记忆,他们主要有三方面的不同,分别是定义上、作用上以及调用方式上,针对这三个不同的方面,首先从定义上说:(1)构造方法必须与类具有相同的名字,而普通方法可以是任何名字,只要符合标识符的命名规则即可;(2)构造方法不含有返回值的定义;而普通方法可以有返回值;(3)不能在构造方法中用return语句返回一个值,而普通方法在有返回值的情况下必须return一个值;其次是在作用上的不同:构造方法的主要作用是用来创建对象,同时给成员变量赋初值;而普通方法是对类的行为的描述;

最后在调用上来说,构造方法用new关键字来调用,而普通方法则是用对象名.方法名来调用;


对象的比较(“
==”、“equals()”)

equals()方法在Object类中比较的是内存地址,而String类中复写了equals()方法,比较的是字符串的内容;

== 在基本数据类型中,比较的基本数据类型的值;

   在引用书籍类型中,比较的是引用(内存地址);


在类内部调用本类方法

静态方法中可以直接调用静态方法,但不能直接调用非静态方法,需要通过对象调用。

非静态方法中可以直接调用,或使用this关键字调用。


this
关键字的使用

this关键字主要有三个主要的用途:首先,this关键字用来定义属性,区分成员变量和局部变量,给局部变量赋值; this用来指代当前对象,可以用来调用方法;其次this关键字可以用来调用构造方法,用来调用构造方法时,this关键字必须放在构造方法的第一行;最后:

this不能与super关键字同时出现在构造方法中,this不能用在static修饰的方法或代码块中。


构造方法的重载

构造方法重载规则与普通方法重载一样;当采用new关键字创建对象时,会自动调用构造方法,主要用来为类中的属性初始化。每个类中都有一个默认的无参构造器,当在类中添加有参数的构造方法,则默认的构造方法遗失。


构造方法的相互调用

在本类中调用本类的构造方法时,可以使用this关键字进行调用,但是必须将此语句放在构造中的第一行,当在有继承关系的两个类中,可以在子类中使用super关键字对父类中的构造方法进行调用,但也必须将此语句放在构造方法中的第一行;this和super不能同时使用;


对象的引用传递

在Java中,参数传递分为基本类型参数传递与对象类型(即引用类型)参数传递。

基本类型参数传递意味着当将一个实参值传递给一个方法时,如果方法修改了该参数,改变的形参,而原始的实参的值保持不变。

引用类型变量传递将一个参数传递给一个方法后,方法接收的是一个引用变量的值,这个值为某个对象的内存地址值。引用变量的参数传递仍然是值传递。


static
的使用(方法、属性)

static可以在变量、方法和代码块中使用;

首先,在变量前使用static是将成员变量声明为全局变量;所有对象均可访问;

其次,也可以在方法中使用static,此时这个方法被称为静态方法,可以使用类名进行直接调用,使用此方法的好处是可以节省内存空间;在一个类中,如果用静态方法去调用一个静态方法,可以直接用方法名直接调用,当在静态方法中,调用非静态方法可以使用对象名直接调用,调用静态方法是可以用类名调用也可以用方法名调用;

最后,static用于代码块时,被称为静态代码块,此代码块的优点是可以给成员变量赋初值,并且它的优先级要比main函数的优先级要高;


理解
main方法

Public 表示此方法为公共的,可被外部所访问;

static 表示此方法为static方法,可被类名直接调用;

void   表示此方法无返回值;

main   系统规定的方法名称;

String【】args 表示接受运行时的参数;



对象数组的使用(静态初始化、动态初始化)

1、 声明及静态初始化:类名【】 对象名= { };

Person[] ps = Person{ p1,p2,p3 };   //p1,p2,p3分别为Person的对象

2、声明及动态初始化  对象名【索引】=new 类名();

Person[] p;//对象数组声明

p=new 类名[3];//动态初始化

ps[0]=new Person();//分别对每个元素初始化

ps[0].name=”zhangsan”;

ps[0].age=13;

……

 

JDK5.0特性


类的继承

类的继承的好处是:通过继承可以减少重复代码的使用,扩展类的功能。

关键字是extends

java只支持单继承, 但是可以有多层继承;

继承是“is a”的关系。“是什么”;

子类继承父类中非private的属性和方法。

子类对象实例化时默认调用父类无参构造方法(并且放在子类构造方法首行)。


子类对象的实例化过程

当采用new关键字实例化子类对象时,首先会默认调用父类无参构造方法,接着调用子类构造方法。

方法的覆写

作用:扩展父类方法的功能。

1、 必须是在存在有继承关系的两个类中;

2、 子类方法和父类的方法名、参数、返回值类型都必须一致。

3、 要求子类方法的访问权限不能小于父类的访问权限。

4、 子类实例化父类对象,子类调用父类的方法时,会默认调用子类中覆写父类的那个方法

5、 子类继承父类的方法,访问权限只能扩大不能缩小,可用public,protected,或default,其中protected和default的区别就是后者必须在同一个包里。private的使用的好处,代码隐藏,安全;对赋值的限制。如果只是在本类中使用,不想外界得到,只要写SET方法就可以,不写GET方法(对赋值限制的体现)。


super
的使用

super调用父类的属性:super.属性名;

super调用父类的方法:super.方法名(实参列表);

调用父类中特定构造方法:super(实参列表);

调用父类中构造方法时,super()必须放在子类构造方法的首行。this和super不能同时调用构造方法。

用super调用父类中的方法时,会调用子类中被覆写了的方法。如果子类中没有覆写父类中的方法,仍能用super调用父类中的方法


this
与super的回顾对比

this用于调用本类的属性和方法,或代表当前对象。

super用于调用父类的属性和方法,必须存在于有继承关系的两个类中;

在调用构造方法时,因为两个都必须放在构造方法中的第一行,因此两个在调用构造方法时不能同时使用;


final
关键字

final可以用于标记类、方法和变量

final关键字在标记类时此类不能被在继承;

final关键字在标记方法时不能被子类复写;

final修饰的变量(成员变量和局部变量)即成为常量,只能被赋值一次;

public static final 全局常量


抽象类的使用

抽象类用abstract关键字修饰。抽象类可以有实例变量、常量,也可以同时有抽象方法和具体方法,它提供一个继承的出发点,不能被实例化,但是可以通过多态性,可由其子类进行实例化。private 和static 不能声明为抽象的,子类需要复写父类所有的抽象方法;


接口的使用

接口是常量和抽象方法的集合。接口中不能有普通方法和变量。且常量必须被赋值。

接口可以实现多继承(即接口可以继承一个到多个接口,但不能继承类)

一个类可以实现多个接口;接口不能有构造方法

若extends和implements同时出现,extends必须写在implements前面

抽象类可以实现接口,并且不必实现接口中的所有抽象方法

抽象类和接口的区别

抽象类和接口是Java面向对象体系当中非常重要的两个元素,在语法方面有很多的区别,接口和抽象类在语法上的区别主要体现在以下的四个方面:

a)   一个类可以实现多个接口,而除了Object之外,一个类只能继承一个父类;

b)   接口当中所有的方法都是抽象方法,并且默认为public权限,而抽象类当中可以有抽象方法,也可以没有抽象方法

c)   接口当中的变量全部为全局常量,而抽象类当中可以定义任何类型的变量;

d)   抽象类当中有构造方法,而接口没有;


用接口实现多继承

接口不能继承抽象类,但是它可以结局单继承带来的局限性,就是多继承:

例如:Class A implements B,C,D


对象的多态性

对象的多态性表现为转型(即向上转型和向下转型)及方法的重载和复写。

1、转型:要求两个转型的对象有继承或实现关系。。

向上转型:子类对象转换成父类对象,自动转换。

           父类对象用子类实例化。

           转型后的对象不能调用子类对象特有的方法。但调用的方法为子类自身的方法。

向下转型:父类对象转换成子类对象,需要强制转换。

          只有发生过向上转型,才能发生向下转型。

2.方法的重载:方法的重载是多态的实现手段之一,解决了命名空间问题(在类中实现相同功能的方法)满足条件:1、方法名相同  2、方法的参数类型不同或参数个数不同或参数类型顺序不同  3、返回值类型可以相同也可以不同面向对象的概念

3.方法的复写:

必须是在存在有继承关系的两个类中;子类方法和父类的方法名、参数、返回值类型都必须一致。要求子类方法的访问权限不能小于父类的访问权限。子类实例化父类对象,子类调用父类的方法时,会默认调用子类中覆写父类的那个方法


对象多态性在抽象类及接口上的应用

面向接口编程的优点:1、调用者不用知道其使用对象的具体所属类

                    2、一个对象可以很容易被另一个对象(同样实现了接口)所替换

                    3、对象间的连接不必硬绑定到一个类的对象上,因此增加了灵活性

                    4、松耦合性

                    5、提高可扩展性


异常的概念

程序中的错误导致中断了正常的指令流的一种事件;通过异常处理机制,可以用一种结构化的可控方式来处理运行时的错误。在Java中所有的异常都用类来表示,并且所有的异常类都是继承自java.lang包中的Throwable类。

Throwable类有两个直接子类:Error(用来表示编译和运行错误,如程序进入死循环,内存溢出等,Error处理一般由系统承担,java本身不提供相应的Error处理机制)和Exception(用来表示由程序活动所导致的错误,如运算时除数为零等。当程序运行出现Exception时,在程序中加入异常处理代码,仍可使程序继续运行直至程序结束。由于Exception是可以检测和处理的,因此产生了相应的异常处理机制)。


try…catch
语句

try代码块中是一段可能产生异常的代码;catch语句的参数包括一个异常类型和一个异常对象。该异常类型指明了catch语句所处理的异常类型,异常对象则在try中产生。{}中为对异常的处理。

与一个try相关的catch语句可以有一个或多个,异常的类型决定了要执行那个catch语句。

执行顺序:1、首先执行try代码块中的所有语句

2、 如果try{}中无异常产生,不执行catch(){},直接执行catch之后的语句

3、 如果try{}中有异常产生,则发生异常之后的语句不会被执行,直接跳到catch(){}中执行。之后顺序执行。

如果catch(){}中的异常类型与产生的不同,则执行顺序与未捕获异常一样。


throws
关键字

throws用在方法的声明处,表示此方法不处理该类异常,而是交给方法的调用处处理。


throw
关键字

throw用在方法的内部,用来手动的抛出异常对象。要么与try…catch一起使用,要么与throws一起使用。


finally
关键字

finally必须用在异常中,不能孤立的使用,至少必须有try语句(但只有try,没有catch和finally会报错,即try,catch和finally都不能单独使用;一个try可以有多个catch;try没有catch也行,但必须要有finally;不管之前是否抛出异常,都会执行finally;现在try中加一个return语句 ,但finally仍然会执行,且先执行finally再执行return;


package
的定义与使用

package的主要作用是打包,包的定义要放到java文件的最上面,打包的类文件编译是:

javac –d . 类名.java  执行的时候是:java 包名.类名 


import
语句的使用

import 语句的主要作用是往程序中导入包

 


ArrayList
的使用

ArrayList类封装了一个动态再分配的Object[]数组。每个ArrayList对象有一个数值,这个数值用来表示存储列表中元素的数组的容量。当元素添加到ArrayList时,这个数值会在常量时间内自动增加。


 

 

 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29324876/viewspace-1265631/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: Oracle用户解锁
请登录后发表评论 登录
全部评论

注册时间:2013-11-15

  • 博文量
    22
  • 访问量
    261216