您的位置:首页 > 编程语言 > Java开发

Java学习笔记

2015-07-11 22:29 411 查看

java基础

java简介

java是面向对象的语言,是由Sun公司在95年出品的,2009年Sun公司被ORACLE公司收购。

java SE是基础部分,java EE是java的企业版,相比java SE,java EE增加了JSP、EJB等技术。

JVM:Java虚拟机,JDK:Java开发工具包,JRE:Java运行环境。

Java开发环境搭建

安装JDK

配置环境变量


J***A_HOME配置JDK安装路径

PATH配置JDK命令文件的位置(bin目录)

CLASSPATH配置类库文件的位置(lib目录)







利用文本文件编辑Java程序

用文本文件去编写Java的源代码文件,源代码文件以.java结尾。

用编译器(javac命令),对源代码文件进行编译的操作。把它编译成以.class结尾的字节码文件,字节码文件与平台无关,实现跨平台。

在不同的平台中用不同的解释器(java命令),去解释运行字节码文件,就可以得到程序运行的结果。

Eclipse

Eclipse开发Java程序分为四步

创建一个Java项目

创建程序包

编写Java源程序

运行Java程序

Java基本语法

约定俗成的命名规则

类和接口名。每个字的首字母大写,含大小写。

方法名。首字母小写,含大小写,少用下划线。例如,myName,setTime。这种方法叫驼峰式命名。

常量名。基本数据类型的常量名全部大写字与字至之间用下划线分隔。对象常量可大小混写。例如,SIZE_NAME。

变量名。可大小混写,首字符小写,字间分隔符用字的首字母大写。不用下划线,尽量做到见名知义。



变量

基本数据类型默认值存储格式数据范围
short02个字节-32768到32767
int04个字节-2147483648到2147483647
byte01个字节-128到127
char
long
float
double
boolean
Java中变量需要先声明再使用。

Java运算符

算术运算符

+、-、*、/、%、++、–。

赋值运算符

=、+=、-=、*=、/=、%=。

比较运算符

,<,==,!=。(==和!=的操作数可以是数值类型和引用类型)

逻辑运算符

&&、||、!、^(一真一假结果为真,其他的都是假)

条件运算符

布尔表达式?表达式1 : 表达式2

运算符的优先级

多总结就行了

Java控制语句

条件控制语句

[code]if(条件){
    条件成立时执行的代码
}


[code]if(条件){
    代码块1
}
else{
    代码块2
}


[code]if(条件1){
    代码块1
}
else if(条件2){
    代码块2
}
...
else {
    代码块n
}


[code]    switch(表达式){
    case 值1:
        代码块1
        break;
    case 值2:
        代码块2
        break;
    ...
    default:
        默认执行的代码块
}


循环控制语句

[code]while(条件){
    代码块
}


[code]do{
    代码块
}while(条件);


跳转语句

break、continue

Java数组

数组定义和初始化

声明数组:

[code]数据类型[ ] 数组名;  //或者: 数据类型 数组名[ ];


分配空间:

[code]数组名 = new  数据类型 [ 数组长度 ];


声明的同时初始化

[code]int [] ages = {12,18,9,33,45,60}; //声明并初始化了一个数组,它有6个元素
char [] symbol = new char[10] //声明并分配了一个长度为5的char型数组


数组遍历

[code]int [] ages = {12, 18, 9, 33, 45, 60};
for(int i = 0; i < ages.length; i++){ //ages.length是获取数组的长度
    System.out.println("数组中第"+(i+1)+"个元素是 "+ages[i]); //数组下标是从零开始,一定要注意
}


[code]for(元素类型 元素变量:遍历对象){
    执行的代码
}


Java方法

方法的定义

[code]访问修饰符 返回值类型 方法名(参数列表){
    方法体
}


参数和参数列表

调用带参方法时,必须保证实参的数量、类型、顺序与形参一一对应

调用方法时,实参不需要指定数据类型

当方法参数有多个时,多个参数间以逗号分隔



返回值

如果方法的返回类型为 void ,则方法中不能使用 return 返回值。

方法的返回值最多只能有一个,不能返回多个值。

方法返回值的类型必须兼容,也就是说如果返回值类型为 int ,则不能返回 String 型值。

调用带返回值的方法时,由于方法执行后会返回一个结果,因此在调用带返回值方法时一般都会接收其返回值并进行处理。



Java类和对象

对象是一个具体的,确定的物体。

是封装对象的属性和行为的载体,反过来说具有相同属性和行为的一类实体被称为类。



[code]public class 类名{
//定义属性部分(成员变量)
属性1的类型 属性1;
属性2的类型 属性2;
...
//定义方法部分
方法1;
方法2;
...
}


对象

要使用一个对象,首先要先创建一个对象。

[code]类名 对象名 = new 类名();


构造方法

1.构造方法的名称与类名相同,并且没有返回值。

2.如果在定义类的时候没有写构造方法,系统会默认生成一个无参构造方法,不过这个构造方法什么也不会做。

3.当有指定的构造方法时,系统不会再添加无参构造方法。

4.构造方法的重载:方法名相同,但参数不同的多个方法,调用时会自动根据不同的参数选择相应的方法。

Java封装

面向对象有三大特性:封装、继承、多态。

封装的好处:

隐藏类的实现细节

让使用者只能通过事先定制好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作

便于修改,增强代码的可维护性

如何实现封装:


修改属性的可见性,在属性的前面添加修饰符

创建 getter/setter方法,用来读写属性

在 getter/setter方法里加入属性的控制语句,例如可以加一个判断语句,对于非法输入给予否定。



Java访问修饰符

访问修饰符本类同包子类其他
private
默认
protected
public

this关键字

使用this.属性操作当前对象的属性,this.方法调用当前对象的方法。

内部类

内部类的主要作用有:


内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类

内部类的方法可以直接访问外部类的所有数据,包括私有的数据

内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便



使用方法:


定义成员内部类后,必须使用外部类对象来创建内部类对象,即

内部类 对象名 = 外部类对象.new 内部类()

如果外部类和内部类具有相同的成员变量或方法,内部类默认访问自己的成员变量或方法,如果要访问外部类的成员变量,可以使用 this 关键字



静态内部类:


静态内部类不能直接访问外部类的非静态成员,但可以通过

new 外部类().成员 的方式访问

如果外部类的静态成员与内部类的成员名称相同,可通过类名.静态成员访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通过成员名直接调用外部类的静态成员

创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名= new 内部类();



Java继承

语法

[code]class 子类 extend 父类{
    ...
}


子类重写父类的方法:

重写的方法一定要与原父类的方法语法保持一致,比如返回值类型,参数类型及个数,和方法名都必须一致。

继承的初始化顺序

系统会先创建父类对象,在创建子类对象,先初始化属性,在调用构造函数

Java多态

父类的引用指向子类的对象

父类调用子类的对象的继承方法或重写方法

多态引用类型转换

例子:

[code]Dog a = new Dog();
Animal b = a; //自动类型提升 向上类型转换(无风险)
/*
Dog c = b; 
//将父类引用转换成子类引用,编译器不允许这样做
*/
Dog c = (Dog)b; //在父类前加上小括号,里面加上子类类型,实现强制转换
//向下类型转换
/*
Cat d = (Cat)b;
//虽然编译器不会报错,但运行会出问题,因为b是指向Dog类的,它们是不同类型的对象,这里就存在风险
*/


抽象类

从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为子类的模板,从而避免了子类设计的随意性,同是抽象类也规定和约束了子类实现哪些方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: