1 Java语言概述

  1. Java语言的特点。(Java语言在1995年是Sum公司推出,2010年又是被Oracle收购
  2. P2平台无关性、编译与解释并存。
  3. 面向对象的基本特征。

继承性:将公共的方法,变量集成到父类中,代码复用

封装性:public、 protected、private访问权限修饰符,提高代码安全性

多态性:包括方法的覆盖和重载,为一种功能提供多种实现,提高灵活性

  1. 什么是Java虚拟机(可以运行Java字节码的软件)?字节码(.class)的好处1.文件尺寸较小,便于传输;2.可跨平台运行,实现“一次编写,到处运行”

java虚拟机提供java程序运行的平台,程序员编写的java程序通过虚拟机编译成java字节码文件。

2 Java语言开发环境

1. JDK环境的配置。     

2. Path和ClassPath的作用(PATH环境变量。 作用是指定命令搜索路径; CLASSPATH环境变量。 作用是指定类搜索路径,要使用已经编写好的类,前提是能够找到它们.)?

path:设置供操作系统去寻找可执行文件,即java的安装路径

classpath:告诉java解释器在哪里找到class文件及相关的库程序

3 Java语言基础

1. 基本数据类型有哪些?

(整型:byte, short, int, long

字符型:char

浮点型:float, double

布尔型:boolean(只有truefalse,不能转换其他类型,如boolean t = true;

)

基本数据类型在内存中存放的是数据值本身。

2. 两个浮点数变量不能用“==”判等

3. 引用数据类型在内存中存放的是指向该数据的地址,不是数据值本身。

4. Java 标识符的命名规则是由大小写字母、数字、下划线(_)和美元符号($)组成,不能以数字开头,不能有空格,不能与Java语言的关键字重名,区分大小写(给定标识符,会判断是否合法)

5. Java语言final定义常量单精度后加fF(必须),双精度后加d或D(可省略)。

6. Java 语言程序中可随时定义变量,先定义后使用,不必集中在执行语句之前。

7. 字符串数据类型转换为数值型数据(inta)。

8. 数值型数据转换为字符串类型。

int MyInt=1234;

String  MyString=""+MyInt;     

9. Java 语言中从键盘输入数据。

  1. 由键盘输入的数据,不管是文字还是数字,Java皆视为字符串。
  2. 输入方式。

Scanner scan = new Scanner(System.in);

int read = scan.nextInt(); // scan对象调用nextInt方法输入整数

String s = scan.nextLine(); // scan对象调用nextLine方法输入一行文本

System.out.println("输入的正整数是:" + read);

10. 表达式求值表达式求值,自增自减1

  1. ++和——的运算,a++;//先使用,再加一;++a;// 先加一,后使用

4 流程控制

1. Java语言不允许在两个嵌套的复合语句内声明两个同名的变量。

2. Java中的三种注释方式。(Java特有的文件注释,产生html文档)。

3.可以用选择和循环结构来解决问题,三种循环语句的区别(见程序)

4. break和continue的含义和区别。

5 数组与字符串

1. 数组的概念。相同数据类型的元素按一定顺序排列的集合。Java中,数组元

素可以为简单数据类型,也可以为对象。

2. Java语言内存分配问题

  1. 栈内存:定义的基本类型的变量和对象的引用变量,超出作用域将自动释放。
  2. 堆内存:存放由new运算符创建的对象和数组。由Java虚拟机的自动垃圾回收器来管理。

3. 什么是引用变量?(为数组或对象起的一个名称,在栈内存中分配

4. Java 中一维数组的定义和使用。

int a[ ]; //不能给出数组长度,因为此时还没有给数组分配内存

int[ ] a;

int a[ ] = {1,2,3,4};

int[ ] a = new int[4];// new分配内存时,数组的每个元素都会自动赋默认值

   Java对数组元素 要进行越界检查。

   每个数组都有一个属性length指明它的长度,如a.length指出数组a所包含的元素个数。(常作为循环控制条件)

  1. 二维数组的定义和使用。
  1. Java中的二维数组看作是由多个一维数组构成。
  2. 求二维数组的维数

计算某数组的行数:数组名.length

计算某数组中某行元素的个数:数组名[下标].length

  1. 二维数组申请内存方式(必须指定高层维数):(下面哪些错误)

int[][] MyArray = new int [10][];   //行数一定要定义

int[][] MyArray = new int [10][3];

int[][] MyArray = new int [][3];

int[][] MyArray = new int [][];

  1. 字符串的声明和使用。
  1. String 变量名;  变量名 = new String("字符串")

String 变量名 = new String("字符串")

String 变量名 = "字符串"

  1. String 类的常用方法(求长度,求子串、指定位置的字符,==和equals方法比较等)

6 类与对象

1. 什么是类(数据和方法封装在一起)?什么是对象(类的实例,如Student s = new Student()s)?类和对象有怎样的关系?

2. 类的定义(class 类名)和使用。

「类修饰符」class 类名

「修饰符」数据类型 成员变量名称

「修饰符」返回数据类型 方法名 (「int aString…A(可变参数)」)

类的修饰符:publicabstractfinal                           

成员变量的修饰符:publicprotectedprivate(子类也不能访问)、

final(不能改变)、static(没有创建对象也可以访问)

成员方法的修饰符:publicprotectedprivate(子类也不能访问)、

final(不能改变)、static(没有创建对象也可以访问)

3. 成员变量(类中定义,随对象创建而存在,在堆内存存放,除被final修饰外会自动赋值)与局部变量(方法里定义,随方法的调用而产生栈内存中存放,不会自动赋值)的区别?

类中定义的变量是成员变量,方法中定义的变量是局部变量;

成员变量可以被publicprotectedprivatestatic修饰,局部变量不可以

成员变量储存在堆内存,而局部变量储存在栈内存

局部变量不会自动赋值

4. 对象的创建(Student s = new Student())和使用(s.width = 12;  s.print())。(实质上就是实例化)

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

匿名对象:new类名();

对象名.成员变量 对象名.成员方法

new 类名().成员变量     new 类名().成员方法

  1. 当一个对象被创建时,会对其中各种类型的成员变量按表6.4自动进行初始化。
  2. 一个类多个对象,它们的成员变量分配在不同的内存,因此修改某一对象的成员变量时其他不受影响。
  3. this关键字的使用。this.成员名”,此时this代表调用此成员的对象。

若在通过方法调用,将外部传入的参数赋值给类的成员变量,方法的形式参数与类的成员变量同名时,则需用this来标识成员变量。

this.成员名”,此时this代表调用此成员的对象。

若在通过方法调用,将外部传入的参数赋值给类的成员变量,方法的形式参数与类的成员变量同名时,则需用this来标识成员变量。

  1. 传递数组:指明参数是一个数组,实参只给出数组名(如trans类中的public void transpose (int[] array),而在main主类中有int a []={1,2,3,4,5}; trans pose=new trans();  b=pose.transpose(a); //直接用数组名a调用方法,返回值赋给数组b)。
  2. 参数是基本数据类型时,采用传值方式调用;当参数是引用型的变量时,则是传址方式调用
  3. 了解匿名对象。

7 Java语言类的特征

(java的面向对象包括封装、继承、多态3个主要要点)

1. 私有成员(private)、公共成员(public)、保护成员(protected)、缺省访问控制符各自的访问权限是什么?

2. 什么是方法的重载(指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。),即方法的重载条件是什么(同名的方法,但参数列表不同)?会判断哪些是合法的重载形式。

  1. 什么是构造方法(构造方法是一个与类同名的方法。对象的创建和就是通过构造方法来完成,其功能主要是完成对象的初始化(赋值),不能有返回值。)?构造方法有哪些特征(

初始化数据,可以重载,如:

class Student{

//无参数构造方法。

public Student(){

 }

//构造有参函数,名字参数,初始化name属性值

public Student(String  name){

    this.name=name;

   }

//构造有参函数,名字,分数参数,并且初始化这些属性值

public Student(String  name,int score){

     this.name=name;

     this.score=score;

   }

})?何时被调用(int score =90;

String name = "李四";Student stu3 = new Student(score,name);)?什么是默认构造方法(默认构造方法定义:无参数,方法内无语句的构造方法称为默认构造方法)?何时被调用(当一个类没有构造方法,编译程序自动提供一个默认构造方法)?

  1. 什么是静态成员(static修饰的成员)?什么是实例成员(没有被static修饰的成员)?使用静态成员有什么意义(实例方法必须先生成类对象才能调用(实例化),而静态方法不需要实例化就可以使用 )?静态成员的访问格式是什么(类名.静态变量名或对象吗.静态变量名)?

1.static方法是类中的一个成员方法,属于整个类,即使不用创建任何对象也可以直接调用!

static内部只能出现static变量和其他static方法!而且static方法中还不能使用this....等关键字..因为它是属于整个类!

2.静态方法效率上要比实例化高,静态方法的缺点是不自动进行销毁,而实例化的则可以做销毁。

3.静态方法和静态变量创建后始终使用同一块内存,而使用实例的方式会创建多个内存.

  1. main方法为何是public, static的呢(

1.main是java程序的入口,java程序通过java虚拟机JVM调用,属于外部调用,所以需要使用public修饰,否则虚拟机无法调用。

2.在java中,没有static的变量或函数,如果想被调用的话,是要先新建一个对象才可以。而main函数作为程序的入口,需要在其它函数实例化之前就启动,这也就是为什么要加一个static。)?

  1. 对象的赋值与比较。
  2. 对象是一种引用型变量,它实际保存的是对象在内存中的地址。

java虚拟机需要在类外调用main()方法,所以main()方法的访问限制必须是public;又因为java虚拟机在执行程序前并没有创建main()方法所在类的一个实例对象,所以它只能通过类名来调用main()方法作为程序的入口,所以该方法必须是static的。

  1. 引用变量也可作为方法的参数(课本P108,采用传址调用。

对象是一种引用型变量,它实际保存的是对象在内存中的地址。

8 继承、抽象类和接口

1.什么是继承?什么是父类、子类?子类是如何创建的(关键字extends)?

在Java语言中有一个名为java.lang.Object的特殊类,所有的类都是直接或间接地继承该类而得到的。另外,类的继承是可以传递的

  1. 在子类中如何访问父类的成员(通过super来实现对父类成员的访问,super()语句可以调用父类特定的父类方法,“super.成员名”调用成员变量和成员方法)。
  2. 什么是方法的覆盖(子类继承父类中的方法后,对方法重新做了一定的修改)。方法的覆盖与方法的重载有和区别(覆盖要求参数列表相同;重载要求参数列表不同)?

重载是在子类中定义与父类名称相同但参数个数或参数类型不同的方法;

覆盖是在子类中定义名称、参数个数、参数类型均与父类相同的方法。

  1. ”==”和equal( )方法比较对象的异同( “==” 在基本数据类型中判断的是两个变量的值是否相等,而equal()方法对比的则是两个变量会实例所指向内存中存储的值是否一致,主要比较String型内容是否相等)?

5.什么是抽象类和抽象方法? (直接举例:

abstract class Animal //定义抽象类

{

       String name;

abstract void eat(); //定义抽象方法,{}

}

class Horse extends Animal //定义继承Animal的子类

{

 void eat() //重写父类的抽象方法,若父类方法不想被覆盖,,用final修饰

 })

抽象类有哪些特征(抽象类专门作父类,只需声明而不需要定义方法体;abstract不能与privatestaticfinalnative并列修饰同一个方法;抽象类不能用new运算符来实例化对象,不能直接创建对象,只能被继承,而其子类必须实现父类所有抽象方法)?

抽象类不能直接用来创建对象,抽象类的目的是根据他的格式来修改并创建新的类。

6.接口的定义(使用interface来定义一个接口)?接口与抽象类有何区别(接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量;抽象类中可以有具体的方法,接口只能做方法声明;注意:抽象类和接口都不能直接实例化)?

7.利用接口如何实现类的多重继承?

interface Face1

{

       final double PI=3.14;

       abstract double area();

}

interface Face2

{

       abstract void volume();

}

public class Cylinder implements Face1,Face2//多重继承,只能一个public class!!!

{})

  1. 软件包的概念、作用、应用 。(import语句在所有类定义之前,在package(首行)定义之后。
  2. super和this的意义(super()和this()类似,都指的是对象,均需放在构造方法内第一行。区别是, super只能在子类中使用,super()从子类中调用父类的构造方法,this()在同一类内调用其它方法。)?

super()是从子类调用父类构造方法; this()是在同一个类内调用其他构造方法

super()this()一样都是对象,即可以通过super.成员变量、super.成员方法

this.成员变量、this.成员方法

10. 如何理解Java的多态性?

9 异常处理

  1. 什么是异常(异常指在硬件和操作系统正常时遇见的运行错,在 Java 中所有异常类型都是内置类 java.lang.Throwable 的子类。)?按照错误的性质将错误如何分类及其含义(语法错,语义(运行)错和逻辑错)? (哪些属于异常(异常指在硬件和操作系统正常时遇见的运行错,主要是算法错),会判断)

程序因语法错、语义错、逻辑错导致程序不能正常运行或运行结果不正确.

异常:程序运行过程中由代码产生的一种错误Exception

错误:程序执行过程所遇到的硬件或操作系统的错误Error

  1. 简述Java的异常处理机制。

(A.异常处理:在Java语言的错误处理结构由try,catch,finally三个块组成。其中try块存放将可能发生异常的Java语言,并管理相关的异常指针;catch块紧跟在try块后面,用来激发被捕获的异常;finally块包含清除程序没有释放的资源,句柄等。不管try块中的代码如何退出,都将执行 finally块。


 B.抛出异常:Java语言可以不在方法中直接捕获,而throw语句将异常抛给上层的调用者。throw语句就是来明确地抛出一个异常;首先你必需得到一个Throwable的实例句柄,通过参数传到catch中,或者采用new操作符来创建一个。

程序运行若产生异常则会生成一个"异常对象"并把该对象抛给运行系统,系统会找寻相应的代码来处理异常。

  1. 什么是抛出异常和捕获异常?try-catch-finally语句如何使用

       try: try块中主要放置可能会产生异常的代码块。

catch: catch块中放置当出现相应的异常类型时,程序需要执行的代码。

finally: finally中存放一定会执行的代码。

throws:在方法的签名中,用于抛出次方法中的异常给调用者,调用者可以选择捕获。

throw:用于抛出一个具体的异常对象。

)?

  1. Java的异常处理机制是如何实现的,为什么有一些异常一定要捕获,否则编译不能通过?
  2. 抛出异常的方式。

抛出异常有三种形式:

①系统自动抛出

②throws :throws 用来标明一个成员函数可能抛出的各种“异常”。出现在方法头。public void add() throws NumberFormatException{

    代码。。。。。

}

③throw:throw 语句用来明确地抛出一个“异常”。出现在方法体。

public void dev(){

    int a = 5 ;

    int b = 1 ;

    if(b==0){

        throw new ArithmeticException() ;

    }else{

        System.out.println(a/b);

            }

}

13

  1. 内部类与匿名内部类的定义与使用。

内部类的主要作用是将逻辑上相关的类放到一起。
匿名类是特殊的内部类,没有类名。在定义类的同时,就生成该类的一个实例,并且不会在其他地方用到该类,所以不用起名字,因而又称匿名内部类。

14 图形界面设计

  1. JavaFX窗口结构(图14.2)及基本概念。舞台、场景、面板、节点等相关概念。
  2. JavaFX的几种布局面板的布局策略。

       1.流式面板(FlowPane面板),它采用的布局策略是:按照控件的添加次序挨个摆放,按照从上到下、从左到右的次序摆放。当窗口的大小发生变化后,场景的大小也自动跟着变化,面板的大小也跟着变化,并且会重新计算各个控件的位置,重新摆放各个控件的位置。FlowPane pane = new FlowPane();

2. 网格面板(GridPane面板,)它采用的布局策略是:将整个面板划分为若干个格子,每个格子的大小是一样的,每个格子中可以放置一个控件,类似于表格的方式。GridPane pane = new GridPane();

3. 边界面板(BorderPane面板),它采用的布局策略是:将整个面板划分五个区域,分别是上、下、左、右、中,每个区域可以放置一个控件。BorderPane pane = new BorderPane();

4.单行面板(HBox面板),它将所有的控件放在同一行,无论有多少个控件都是放在同一行。HBox hBox = new HBox(15);

5. 单列面板(VBox面板),VBox是将所有的控件放在同一列。

VBox vBox = new VBox(15);vBox.setPadding(new Insets(15, 5, 5, 5));

6.栈面板(StackPane),它将所有的节点放在一个堆栈中进行布局管理,后添加进去的节点会显示在前一个添加进去的节点之上。对齐属性(Alignment)可控制子节点在StackPane中的位置,同时该属性会影响所有的子节点。外边距属性(Margin)控制在StackPane中的单个子节点位置。)

  1. JavaFX常用的辅助类有哪些?

15 事件处理

  1. 什么是事件?什么是事件源?什么是事件监听者?
  2. 简述委托事件模型?
  3. 担任监听者的方式有哪些?监听者与组件之间的关系?(一对一?一对多?多对多?)

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐