JAVA基础----简答

注:对应问题见上篇博客。


一、Java基本语法元素:

  1. 标识符是由字母、下划线(_)、美元符号($)和数字组成的字符串,首字母不能是数字。
    关键字不能作为标识符;布尔常量true和false不能作为标识符;null不能作为标识符。

  2. Java语言关键字
    在这里插入图片描述

  3. Java语言的注释:
    (1)单行注释 “//”
    (2)多行注释 “/* … /”
    (3)文档注释 “/
    *… */” 文档注释属于多行注释.

  4. Java数据类型及范围:
    在这里插入图片描述

  5. 包装类用途:
    (1)作为基本数据类型对应的类,方便设计对象的操作。
    (2)包含基本类型的相关属性以及相关的操作方法。

基本类型 包装类名
byte Byte
short Short
int Integer
long Long
char Character
float Float
double Double
boolean Boolean

(类的首字母大写)

  1. Java中常量:
    (1)整数常量
    (2)浮点常量
    (3)布尔常量(true和false)
    (4)字符常量
    注:简单字符常量是由一对单引号括起来的字符,但不能是(‘)和 ()。单引号和反斜杠需要用转义字符表示,分别为’\’’和’\ ’。
    (5)字符串常量
    (6)null常量

    Java中变量:
    (1)类变量
    (2)实例变量:不使用static修饰的类变量
    (3)阵列组件
    (4)形参
    (5)局部变量

  2. Java运算符:关系运算符、算数运算符、逻辑运算符、赋值运算符

  3. 强制类型转换:从高精度向低精度转换(可能会出现精度损失)如:int a = (int)(5.0/3).
    自动类型转换:从低范围到高范围转换,如double a = 1. (int范围小于double)

二、Java基本控制结构:

  1. 三种控制结构:顺序结构,分支结构,循环结构
  2. if-else语句、switch语句、while语句、do-while语句、for循环语句
    for-each语句:
For(变量类型 变量名:数组/容器)
{
    
    
循环体语句;
}
  1. switch语句中的控制表达式必须是char、int、short、byte类型的。
    注:在switch(expression)中,expression只能是一个整数表达式或者枚举常量,整数表达式可以是int类型或Integer包装类型。由于byte,short,char都可以隐式转换为int类型,所以,这些类型也可以用作表达式。

三、Java面向对象程序设计:

  1. 类的定义和使用
(修饰符) class 类名 (extends 父类) (implements AB...{
    
    
//类主体
}
  1. 如何创建和使用对象:使用new关键字 类名 对象名 = new 类名();

  2. 什么是方法的重载?
    在这里插入图片描述

    如果同一个类中包含了两个或两个以上方法名相同,方法参数的个数、 顺序或类型不同的方法,则称为方法的重载,也可称该方法被重载了。
    只改变参数,其他不变。

  3. This 关键字用于指代本类对象
    Super 用于指代父类对象

    A:在类中的位置不同
    成员变量:在类中方法外
    局部变量:在方法定义中或者方法声明上
    B:在内存中的位置不同
    成员变量:在堆内存
    局部变量:在栈内存
    C:生命周期不同
    成员变量:随着对象的创建而存在,随着对象的消失而消失
    局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
    D:初始化值不同
    成员变量:有默认初始化值
    局部变量:没有默认初始化值,必须定义,赋值,然后才能使用。

    若局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。

  4. 封装:将实体特征的属性隐藏起来,对象与外界仅通过公共方法交流,这样可以提高程序的可靠性、安全性、改善程序的可维护性。

  5. 继承的实现:extends关键字

  6. 本质上多态分为:
    (1)运行期多态(动态多态)
    (2)编译期多态(静态多态)
    方法的重载(overload)是编译时多态
    运行期多态:继承或父类引用指向子类对象

    多态:Father c = new Child()

    编译看左,运行看右:c可以访问子类重写父类的方法,c不可以访问子类的特有方法,c可以访问父类中的成员变量。

  7. 四种访问控制符及权限:
    在这里插入图片描述

  8. 使用abstract关键字定义抽象类

  9. 对象类型转换:
    在这里插入图片描述

    向下转型
    向上转型:多态

  10. Static修饰的类变量和类方法可直接通过类名访问,(JVM加载时生成)且各对象的同一类变量和类方法享有同一内存空间。
    Static修饰的类变量和类方法不可访问非静态的成员变量和成员方法

  11. 被Final修饰的是不可变的。
    对于不可变的理解:
    对于基本类型来说:不可变说的是数据不可改变
    对于引用类型来说:不可变说的是地址值不可改变,内容是可以发生变化的。

  12. 如何定义和导入包

  13. 接口的定义和使用:

定义:public(或默认) interface 接口名 (extends 父类接口列表)

在这里插入图片描述

  1. 内部类、匿名类的定义

  2. 泛型

四、数组和字符串:

  1. 定义数组:
    动态定义: int[] a = new int[数组长度];
    静态定义: int[] a = new int[]{元素1,元素2,元素3…};
    静态定义的省略: int[] a = {元素1,元素2,元素3…};

  2. 数组的length属性,是成员变量

  3. 多维数组的定义和初始化
    二维:
    动态定义: int[][] a = new int[数组行数][数组列数];
    也可以只定义行数: int score[][] = new int[数组的行数][];
    score[0] = new int[数组长度];
    score[1] = new int[数组长度];
    score[2] = new int[数组长度];

  4. 字符串的两种创建方法:
    (1)使用字符串构造方法:

    (2)使用赋值语句.
    String s = “Hello World!!”;

  5. String类的主要方法:

     1)获得字符串的长度:public int length();
     2)截取一个字符:public char charAt(int index);
     3)获得子串:public String substring(int beginIndex);
               public String substring(int beginIndex,intendIndex);
     4)字符串相等比较:public boolean equals(String s);
     5)字符串连接:public String concat(String s);
     6)字符串内容比较:public int conpareTo(String s);    
     	——>逐字符比较,全相同返回0,不同返回差值(有正负).
     7)字符串检索:public int indexOf(char ch);
     			 public int indexOf(char ch,int beginIndex);
     		     public int indexOf(String s);
     			 public int indexOf(String s,int beginIndex);
     8)字符串与字符数组的相互转换:copyValueOf
     9)去掉起始和结尾的空格:trim
     10)字符串替换:replace
     11)字符串大小写替换:toLowerCase/toUpperCase
     12)将其他数据类型转换为字符串:ValueOf
     13)字符串分割:split
    

五、异常处理:

  1. 异常:程序在运行过程中产生的不正常情况。
  2. Java处理异常的两种方式:
    (1)throw关键字
    使用throw关键字可以在指定的方法中抛出指定的异常。
    使用格式:throw new xxxException(“异常产生的原因”);
    (2)try-catch-finally
  3. thorw和throws关键字。
    Thorws:异常处理的一种方式,抛出异常,让别人处理。

六、Java IO流:

  1. 什么是流的读和写?
    读:输入
    写:输出

    流式输入/输出(流式I/O)是一种顺序存取方式。

  2. 字节流和字符流的区别?

    字节流:面向字节的流,以8位1字节单位进行读写,是抽象类InputStream和OutputStream的子类。通常用于处理图像和声音。
    字符流:是面向字符的流,以16位字符为单位进行读写。是抽象类Reader和Writer的子类。通常用于字符数据的处理。

    区别:传输大小不同。

  3. 节点流和处理流如何区分?
    通过参数区分。

七、图形用户界面 GUI:

组件、容器、事件构成了图形用户界面的三大要素。

Java图形用户界面程序主要组成元素是组件。

  1. 容器:

    容器是用来容纳其他组件和容器的特殊组件,是由容器类(Container类)创建的对象。在Java语言中,容器类是组件类(Componnent)的一个子类,具有组件的所有性质。

     分类:
     (1)顶层容器:JFrame(最常用),JApplet,Jwindow,JDialog.
     (2)中间容器:JPanel,JScrollPane,JsplitPane,JDeskopPane,JToolBal.
     (3)特殊容器:在GUI上其特殊作用的中间层,如JInterNalFrame.
    

    除了顶层容器外,其他组件是不能独立显示的,必须放在(add()方法)一定容器中才能显示出来。(add()方法是向容器中添加组件的唯一途径).

     JFrame类设置窗体常用的方法:
     (1)setTitle(String title);
     (2)setBounds(int x,int y,int width,int height);
        //设置窗体显示的位置(x,y)及大小
     (3)setVisable(Boolean b);
        //默认使用JFrame类创建的窗体是不可见的,该方法可使窗体可见
     (4)setDefaultCloseOperaton(int operation);   
       //设置关闭按钮的动作,参数为JFrame提供的四个静态常量
     (5)添加操作:若添加AWT组件,则使用add()方法;但Swing组件不能直接添加到顶层容器中(低版本JDK)。
    
  2. 面板:为了更好的管理组件
    P175 实现

  3. 布局
    (1)不使用布局管理器:
    (2)边界布局:由BorderLayout类实现
    (3)顺序布局:由FlowLayout类实现
    (4)网格布局:由GridLayout类实现
    (5)卡片布局:由CardLayout类实现

  4. 事件处理
    事件处理过程主要涉及: 1.事件源 2.时间 3.事件处理者
    事件源是事件发生的场所,通常是各个组件,如被单机的按钮;
    事件是用户对界面的操作,如操作键盘时出发的键盘事件;
    事件处理者则是对收到的事件进行处理的程序,也称为监听器。

八、Java多线程:

  1. 进程与线程:一个进程可以包含多个线程。

  2. 实现线程的两种方法:
    (1)继承Thread类,重写run()方法,创建Thread子类对象,调用start()方法。
    (2)实现Runnable接口,重写run()方法,创建Thread类对象,参数为实现接口: Thread th = new Thread(实现类对象);调用start()方法。

  3. 线程的状态:
    (1)新建
    (2)就绪
    (3)运行
    (4)阻塞
    (5)死亡

    生命周期:
    在这里插入图片描述

  4. 线程类的主要方法:

Sleep方法:休眠 
yield方法:暂停 (静态方法)
join方法:合并
destory方法:销毁
interrupt方法:中断。一个线程运行使,另一个线程可以调用对应的Thread对象				  的interrupt方法中断它。
wait方法:使线程进入等待状态,直至被另一个线程唤醒。

注:sleep()调用会给较低优先级的线程一个运行机会,而yield()方法指挥给相同优 先级线程一个执行机会。

  1. 线程的同步:(为了避免同一个数据对象被多个线程同时访问)

猜你喜欢

转载自blog.csdn.net/m0_50435987/article/details/118658551