java程序的运行机制和JVM
由java语言编写的程序需要经过编译步骤,但这个编译步骤不会生成特定平台的机器码,而是生成一种与平台无关的字节码(*class文件)必须使用java解释器来解释执行
java源文件->javac->字节码文件->java->特定平台的机器码
java虚拟机 负责解释执行字节码(JVM) 不同平台的JVM不同,但都是相同的接口
面对对象程序设计简介
基本思想:使用类、对象、继承、封装、消息等基本概念进行程序设计
采用面向对象方式开发的软件系统,其最小的程序单元是类,这些类可以生成系统中的多个对象,而这些对象则直接映像成客观世界的各种事物
成员变量(状态数据)+方法(行为)=类定义
程序单位:
面向对象:类
面向过程:函数
面向对象的基本特征:封装(Encapsulation)、继承(Inheritance)、多态(Polymorphism)
封装:将对象的实现细节隐藏,通过一些公用的方法来暴露该对象的功能
继承:是面向对象的最显著的一个特征。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力
多态:多态性是指允许不同软件元素对同一消息作出响应
把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。
对象的基本特征:标识唯一性、分类性、多态性、封装性、模块独好性
类是具有共同属性、共同方法的一类事物
(类是对象的抽象,对象是类的实例)
Arrays类的常用方法
位于 java.util 包中,主要包含了操作数组的各种方法。
import java.util.Arrays;
比较数组,赋值,截取、输出
import java.util.Arrays; public class ArrayText { public static void main(String[] args) { //java中定义数组常用type[] arrayName来表示 int[]a = new int[]{3,4,5,6}; int[]a2 = new int[]{3,4,5,6}; //Arrays.equals(a,a2) 若a,a2数组长度、每个元素依次相等则输出true System.out.println("数组a和数组a2是否相等:"+ Arrays.equals(a,a2)); //Arrays.copyOf(a,6) 复制a数组,生成一个新的b数组 int[]b = Arrays.copyOf(a,6); System.out.println("数组a和数组b是否相等:"+ Arrays.equals(a,b)); //Arrays.toString(b) 输出b数组{3,4,5,6,0,0} System.out.println("b数组的元素为:"+Arrays.toString(b)); //将b数组的第3个元素(包括)到第五个元素(不包括)赋值为1,得到{3,4,1,1,0,0} Arrays.fill(b,2,4,1); Arrays.sort(b);//对b进行排序 得到{0,0,1,1,3,4} System.out.println("b数组的元素为:"+Arrays.toString(b)); } }
定义类
1.定义类的简单语法:
修饰符可以省略,也可以是public、final、abstract
//java中各类修饰符总结
[修饰符] class 类名 { 零到多个构造器定义... 零到多个成员变量... 零到多个方法... }
2.定义方法的语法格式:
修饰符可以省略,也可以是public、protected、private(三者只能出现其一)static、final、abstract(两者只能出现其一)。它们可以与static组合起来修饰方法
[修饰符] 方法返回值类型 方法名(形参列表) { //由零条到多条可执行性语句组成的方法体 }
3.定义构造器的语法格式:
修饰符可以省略,也可以是public、final、abstract
构造器既不能定义返回值类型,也不能使用void声明构造器没有返回值。如果为构造器定义了返回值类型,或者使用void声明构造器没有返回值,编译时不会出错,但Java会把这个所谓的构造器当成方法来处理——它就不再是构造器
[修饰符] 构造器名(形参列表) { //由零到多条可执行性语句组成的构造器执行体 }