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

Java面向对象程序设计的基础入门知识

2019-09-09 11:44 316 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/suoyue_py/article/details/100226747

(一)Java的3种平台简介

1.Java SE: 曾称为J2SE,为Java标准版或Java标准平台。提供标准的Java Development Kit(JDK)。
2.Java EE: 曾称为J2EE,为Java企业版或Java企业平台。包含Java SE平台。
3.Java ME: 曾称为J2ME,为Java微型版或Java小型平台。

(二)jdk目录介绍

安装JDK后安装路径会出现两个文件夹:jdk 和 jres
jdk文件夹的主要目录内容

  • 开发工具:位于 bin子目录中,包括编译器(javac.exe)、解释器(java.exe)、反编译器(javap.exe)和文件生成器(javadoc.exe)
  • Java运行环境:位于jre子目录中,包括Java虚拟机(JVM)、类库等等
  • 附加库:位于lib子目录中
  • C头文件:位于include子目录中
  • 源代码:位于JDK安装目录之根目录中的src.zip文件

Java是区分大小写的

(三)基本数据类型与强制转化

  • 逻辑类型:boolean
  • 整数类型:byte、short、int、long
  • 字符类型:char
  • 浮点类型:float、double

数据类型的显式转换格式为:
(类型名)要转换的值

强制类型转换可能导致精度的缺失

(四)输入输出数据

1.输入基本型数据
Scanner是JDK1.5新增的一个类,用该类创建一个对象:
Scanner render = new Scanner(System.in)
然后render对象调用方法nextBoolean()、nextShort()、nextInt()、nextLong()、nextFloat()和nextDouble(),读取用户在命令行输入的各种基本类型数据。
使用Scanner类需要在头部导入:
import java.util.Scanner
2.输出基本型数据
System.out.println():输出数据后换行
System.out.print():输出数据后不换行

(五)数组简介

索引从0开始
1.数组声明与创建
声明一维数组的两种格式:

  • 数组的元素类型 数组名字[ ]
  • 数组的元素类型[ ] 数组名字

声明二维数组的两种格式:

  • 数组的元素类型 数组名字[ ][ ]
  • 数组的元素类型[ ][ ] 数组名字

Java不允许在声明数组中的方括号内指定数组元素的个数,否则将导致语法错误

声明数组:仅是给出了数组名字和元素的数据类型;
创建数组:真正使用数组,为其分配内存空间,格式为:

  • 数组名字 = new 数组元素的类型[数组元素的个数]

声明与创建也可一起完成,即数组的初始化

  • 数组的元素类型 数组名字[ ] = 数组元素的类型[数组元素的个数]
  • 或 数组的元素类型 数组名字[ ] = { xxx,xxx … xxx}

(六)数组的相关基本使用

1.数组的长度: 数组元素.length,对于二维数组其值是含有的一维数组个数
2.数组的复制:
a、数组的引用赋值方法:xxx = yyy ,完全复制,内容、空间均一样,一个改动,另一个也跟着改
b、arraycopy方法:System类调用

public static void arraycopy(sourceArray,int index1,copyArray,int index2,int length)

将sourceArray从索引index1开始的length个元素中的数据复制到copyArray数组的第index2个元素中开始存放
c、copyOf方法:Array类调用

public static double[] copyOf(double[] original,int newLength)

把参数original指定的数组中从索引 0 开始的newLength个元素复制到新数组并返回该新数组,且长度为 newLength
d、copyOfRange方法:Array类调用

public static float[] copyOfRange(float[] original,int from,int to)

把参数original指定的数组中从索引from至 to-1 的元素复制到新数组并返回该新数组,且长度为 to-from
3.数组的排序与二分法查找
Array类调用

public static void sort(double a[],int start,int end)

把参数a指定的double类型数组中索引star至end-1的元素的值按升序排序

public static int binarySearch(double[]a,double number)

a是事先已排好序的数组,判断参数number指定的数是否在数组a中,是则返回该元素的索引,否则返回一个负数
4.数组与for语句
处理数组与for语句的常规使用,JDK1.5版本对for语句的功能给予扩充、增强,语法格式为:

for(声明循环变量:数组的名字){
...
}

声明循环变量的类型必须与数组的类型相同

(七)类与对象

编程语言发展阶段:面向机械语言(0 1二进制)---->面向过程语言 ---->面向对象语言(封装、继承和多态3个特性)
1.类
类的实现包括类的声明和类体,基本格式为:

class 类名{					//类的声明,class是关键字,类名一般采用驼峰命名法
类体的内容				//包括刻画属性的变量声明和实现功能的方法定义
}

在变量声明部分声明的变量被称为类的成员变量
在方法体中声明的变量和方法的参数被称为局部变量
成员变量又分为实例变量和类变量,用关键字static给予修饰的变量称为类变量,否则称为实例变量(类变量也称为static变量,静态变量)。
同比,类中的方法在声明时,方法类型前面加static修饰的是类方法(静态方法),不加的是实例方法
实例方法既能对类变量操作也能对实例变量操作,而类方法只能对类变量进行操作。
同理:实例方法可以调用类中的其他方法,而类方法只能调用该类的类方法,不能调用实例方法。
2.方法重载
Java中存在重载(Overload)和重写(Override)两种多态
方法重载: 一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即或者是参数的个数不同,或者是参数的类型不同。
构造方法的名字必须与它所在的类的名字完全相同,而且没有类型,也可重载。若类中没有,系统会调用默认的构造方法。
重写: 子类通过重写可以隐藏已继承的实例方法(即方法覆盖)
3.对象
对象声明的一般格式:

类的名字  对象名字

为声明的对象分配内存:

对象名字 = new 类名( )

使用 new 运算符和类的构造方法为声明的对象分配内存,即创建对象。
对象的声明与内存分配也可合并一起:

类的名字  对象名字 = new 类名( )

使用对象:使用“ . ”运算符实现对对象的变量访问和方法的调用

对象.变量
对象.方法

4.对象的引用和实体
堆是一种运行时的数据结构,是一个大的存储区域,用于支持动态的内存管理。
Java的对象在(heap)中分配内存,对象的引用是在(stack)中分配内存。
没有实体的对象称为空对象,空对象不能使用,即不能让一个空对象去调用方法产生行为,否则会出现NullPointerException异常。由于对象是动态的分配实体,因此Java的编译器对其不做检查,编写程序时应避免使用空对象。
5.this关键字
表示某个对象,可出现在实例方法和构造方法中,但不能出现在类方法中,因为类方法可以通过类名直接调用,此时,可能还没有任何对象产生。

(八)包和 import 语句

由关键字package声明包语句,一般格式为:

package 包名

包名可以是一个合法的标识符,也可以是若干个标识符加“ . ”分隔而成,但不允许使用java作为包名的第一部分(发生运行异常)
使用import语句引入包中的类(自己编写的+Java提供的)
Java提供大约130多个包,常用的例如:

  • java.lang:包含所有的基本语言类----核心类库,默认引入
  • java.swing:包含抽象窗口工具集合的图形、文本和窗口GUI类
  • java.io:包含所有输入/输出类
  • java.until:包含数据结构类
  • java.net:包含所有实现网络功能的类
  • java.applet:包含所有实现Java Applet的类

引入包中所有的类,可用通配符“ * ”来代替,可能会增加编译时间,但绝不会影响程序运行的性能,因为当程序执行时,只是将用户真正使用的类的字节码文件加载到内存。
访问权限:
是指对象是否可以通过“ . ”运算符操作自己的变量或通过“ . ”运算符使用类中的方法。访问权限修饰符有 private、protected和public,都是Java的关键字。不用访问权限修饰符的成员变量和方法称为友好变量和友好方法。

(九)继承与接口

Java不支持多重继承(子类只能有一个父类)
使用关键字 extends 来声明一个类的子类,格式如下:

class 子类名 extends 父类名{
...
}

super关键字
子类若想使用父类的构造方法,必须使用关键字super来表示,而且super必须是之类构造方法中的头一句语句
final关键字
可以修饰类、成员变量和方法中的局部变量
声明的final类不能被继承,即不能有子类
同理,修饰父类的final方法也不允许之类重写
若成员变量或局部变量被修饰为final,就是常量。常量声明时没有默认值,故声明时必须指定常量的值且是固定的
abstract关键字
修饰的类称为abstract类(抽象类),修饰的方法称为抽象方法,只允许声明,不允许实现,且不能与final同时修饰一个方法。
abstract类不能使用 new 运算符创建对象
接口
关键字 interface 来声明,格式为:

interface 接口的名字
}
只可以有常量,不能有变量

接口体
包含常量定义和方法定义两个部分。接口体中只有抽象方法,没有普通方法,且所有常量的访问权限一定都是 public(允许省略public、final修饰符)、所有抽象方法的访问权限一定都是public(允许省略public、abstract修饰符)。
接口的使用
一个类通过使用关键字implements声明自己实现一个或多个接口。
若类实现了某个接口,则必须重写该接口的所有方法。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: