java 再来一次

一、java基础

 

1.JVM&JRE&JDK

  • JVM:Java程序需要运行在虚拟机上,不同的平台有自己的虚拟机,因此Java语言可以实现跨平台(一次编译后,可以在多个系统平台上运行)。
  • JRE:包括Java虚拟机和Java程序所需的核心类库(java.lang)。
  • JDK:拥有java的开发工具。

966be34148894a00bc22abf74e74e54c.png

 

 

2.字节码文件

字节码:Java源代码经过虚拟机编译器编译后产生的文件(即扩展为.class的文件),只面向虚拟机。

Java源代码---->编译器---->jvm可执行的Java字节码(即虚拟指令)---->jvm---->jvm中解释器----->机器可执行的二进制机器码---->程序运行。

 

3.基础语法

1.数据类型

基本数据类型:

4717a7b47fde4ec888912378cc6f236d.png

 

类型转换

  由低向高,自动转换。

8505e8fee7ac4d598cb264d8e296c8d5.png

  由高向低,可能会发生数据溢出,精度丢失。

  运算时向高类型转换。

 

包装类及方法

   对应的包装类和父类都在java.lang里。

   静态方法valueOf():

  • 参数为基本数据类型,返回包装类对象;
  • 参数为String字符串(Character类没有以String为  参数的该方法),返回包装类对象

94f51ba07aeb4adab68578d74fab63a4.png

4b84fce658044368af097263978fa1e9.png

     静态方法parseXXX():将字符串装换为对应的基本数据类型

913c713cc7f041c38f1090d7022125a6.png

      非静态方法XXXvalueOf():将当前包装类对象转换为对应的基本数据类型,静态方法不能直接调用类名。

902632953f1c4837988a934a0422cb2d.png

        自动拆箱 包装类——>基本数据类型 (原理是调用了xxxValue方法)    

        自动装箱 基本数据类型——>包装类 (原理是调用了valueOf方法)

 

保留小数

  • 方法一:利用字符串的格式化函数

System.out.println(String.format(“%.2f”, s));

  • 方法二:利用DecimalFormat类
  • DecimalFormat df = new DecimalFormat(“#.00”);//后面几个0就表示几位。

System.out.println(df.format(s));

  • 方法三:格式化字符串的输出方式

System.out.printf(“%.2f\n”, s);

 

取整

  • 三目运算法(除法):向上:a / b + (a % b == 0 ? 0 : 1);    向下:a / b;
  • 向上:Math.ceil(); 向下:Math.floor();

 

四舍五入

  • Math.round();

 

引用数据类型:

  • 类(class)
  • 接口(interface)
  • 数组([])

 

2.编码

Java语言采用Unicode编码标准

 

3.注释/javadoc标签@

  • 单行注释://
  • 多行注释:/* */
  • 文档注释:/** */

标签:

/*
 * <p>项目名称: ${project_name} </p> 
 * <p>文件名称: ${file_name} </p> 
 * <p>描述: [类型描述] </p>
 * <p>创建时间: ${date} </p>
 * <p>公司信息: ************公司 *********部</p> 
 * @author <a href="mail to: *******@******.com" rel="nofollow">作者</a>
 * @version v1.0
 * @update [序号][日期YYYY-MM-DD] [更改人姓名][变更描述]
 */

方法:

/**
 * @Title:${enclosing_method}
 * @Description: [功能描述]
 * @Param: ${tags}
 * @Return: ${return_type}
 * @author <a href="mail to: *******@******.com" rel="nofollow">作者</a>
 * @CreateDate: ${date} ${time}</p> 
 * @update: [序号][日期YYYY-MM-DD] [更改人姓名][变更描述]     
 */

 

4.访问修饰符

  • private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
  • default (包访问权限)(即缺省,什么也不写,不使用任何关键字): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
  • protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。//Java访问权限之 protected详解_java protected-CSDN博客
  • public : 对所有类可见。使用对象:类、接口、变量、方法

3dc709a72ca643c4a9772de6f9b4f485.png

 

5.运算符

  • 赋值运算符:“=”,复合“+=、-=、*=...”。
  • 算术运算符:“+、-、*、/、%、++、--”。
  • 关系运算符:“==、!=、<、>、<=、>=”。
  • 逻辑运算符:与"&"、或"|"、异或"^"、非"!"、短路与"&&"、短路或"||"。                                    & 和 && 的区别: && 左边是false时,不计算右边的表达式,左假即假; & 无论左边真假都会计算右边的表达式。
  • 位运算符
  • 三目运算符:表达式1 ? 表达式2 : 表达式3。true:表达式2 or false:表达式3
  • instanceof运算符:instanceof运算符用于操作对象实例,检查该对象是否是一个特定类型(类类型或接口类型),结果返回一个布尔值。d79c0861fff849c482393a92b4fe133f.png
  • 括号级别最高,逗号级别最低,单目 > 算术 > 位移 > 关系 > 逻辑 > 三目 > 赋值。

 

6.关键字

//访问修饰符

//数据类型

  • 定义类、接口、抽象类和实现接口、继承类的关键字、实例化对象
  • 关键字

    意思

    备注,常用

    class

    public class A(){}  花括号里有已实现方法体,类名需要与文件名相同

    interface

     

    接口

    public interface B(){}  花括号里有方法体,但没有实现,方法体句子后面是英文分号“:”结尾

    abstract

     

    声明抽象

    public abstract class C(){} 介于类与接口中间,可以有也可以没有已经实现的方法体

    implements

     

    实现

    用于类或接口实现接口public class A  interface B(){}

    extends

     

    继承

    用于类继承类 public class A extends D(){}

    new

    创建新对象

    A a=new A();  A表示一个类

     

  • 包的关键字
  • 关键字

    意思

    备注,常用

    import

    引入包的关键字

    当使用某个包的一些类时,仅需类名 然后使用ctrl+shift+o或者选定类名(类或属性或方法)按住ctrl+单击 即可自动插入类所在的包。如:JFrame 快捷键之后自动加入

    import javax.swing.JFrame;

    package

    定义包的关键字

    将所有有关的类放在一个包类以便查找修改等。如:package javake.flycat.draw002;

     

  • 修饰方法、类、属性和变量
  • 关键字

    意思

    备注,常用

    static

    静态的

    属性和方法都可以用static修饰,直接使用类名.属性和方法名。  只有内部类可以使用static关键字修饰,调用直接使用类名.内部类类名进行调用。   static可以独立存在。静态块优先于其他方法/类的执行。

    final

    最终的不可被改变的

    方法和类都可以用final来修饰    

    final修饰的类是不能被继承的    

    final修饰的方法是不能被子类重写。

    常量的定义:

    final修饰的属性就是常量。

    super

    调用父类的方法

    常见public void paint(Graphics g){

    super.paint(g); ··· }

    this

    当前类的父类的对象

    调用当前类中的方法(表示调用这个方法的对象)

    this.addActionListener(al):等等

    native

    本地

     

    strictfp

    严格,精准

     

    synchronized

    线程,同步

     

    transient

    短暂

     

    volatile

    易失

     

     

 

  • 错误处理
  • 关键字

    意思

    备注,常用

    catch

     


     

    处理异常

    1.try+catch
    程序的流程是:运行到try块中,如果有异常抛出,则转到catch块去处理。然后执行catch块后面的语句

    2.try+catch+finally
    程序的流程是:运行到try块中,如果有异常抛出,则转到catch块,catch块执行完毕后,执行finally块的代码,再执行finally块后面的代码。
    如果没有异常抛出,执行完try块,也要去执行finally块的代码。然后执行finally块后面的语句

    3.try+finally
    程序的流程是:运行到try块中,如果有异常抛出的话,程序转向执行finally块的代码。那末finally块后面的代码还会被执行吗?不会!因为你没有处理异常,所以遇到异常后,执行完finally后,方法就已抛出异常的方式退出了。
    这种方式中要注意的是,由于你没有捕获异常,所以要在方法后面声明抛出异常

    try

    捕获异常

     

    finally

    有没有异常都执行

     

    throw

     

     

     
     

    抛出一个异常对象

    一些可以导致程序出问题的因素,比如书写错误,逻辑错误或者是api的应用错误等等. 为了防止程序的崩溃就要预先检测这些因素,所以java 使用了异常这个机制.

    在java中异常是靠 "抛出" 也就是英语的"throw" 来使用的,意思是如果发现到什么异常的时候就把错误信息 "抛出"

     

    throws

    声明一个异常可能被抛出

    把异常交给他的上级管理,自己不进行异常处理。

     

    throw与throws的区别

     

    1.throws出现在方法函数头;而throw出现在函数体; 

    2.throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常; 

    3.  throws可以单独使用,但throw不能;

     

7.控制流程语句

  • break 跳出总上一层循环,不再执行循环(结束当前的循环体)
  • continue 跳出本次循环,继续执行下次循环(结束正在执行的循环 进入下一个循环条件)
  • return 程序返回,不再执行下面的代码(结束当前的方法 直接返回)

8.快捷键

1、注释

  a) 单行注释:[ctrl+k,ctrl+c] 或 ctrl+/

  b) 取消单行注释:[ctrl+k,ctrl+u] (按下ctrl不放,再按k + u)

  c) 多行注释:[alt+shift+A]

  d) 多行注释:/**

2、复制当前行:shift + alt +up/down

3、删除当前行:shift + ctrl + k

4、代码格式化:shift + alt +f

5、自动换行 : alt + z

6、折叠代码: ctrl + k + 0-9 (0是完全折叠)

7、展开代码: ctrl + k + j (完全展开代码)

8、选中代码 : shift + 鼠标左键

 

二、Java补考

判断题

1. javac        编译Java程序需要使用java(javac)命令。(×)  java是执行命令。

2. 简单计算        在Java中,若有int x = 5,则表达式(x + 5)/3的值是3。

3. 数据类型        String是Java中定义的基本数据类型。

4. 类的方法        String类的equals()方法和==的作用是一样的。(×)

5. 二维数组        Java中二维数组既可以表示m行n列的规则数据,也可以表示多行数据,每一行的列数不相同的不规则数组。

6. 方法重载(java的一个特性是“多态性”。多态性包括两种: ①类内部多态(重载)。 ②继承中多态(覆写)。)        Java中,同一个类中,不能有名称相同的方法。(×)

7. 异常(异常是指程序在运行过程中发生的,由于外部问题导致的程序运行异常事件,异常的发生往往会中断程序的运行。在 Java 这种面向对象的编程语言中,万物都是对象,异常本身也是一个对象,程序发生异常就会产生一个异常对象。)        异常也是一个对象。

8. 创建多线程        实现Runnable接口比继承Thread类创建线程的方式扩展性更好。(实现Runnable接口创建多线程和继承Thread类创建多线程相比,实现Runnable接口还可以继承其他类,因为Java中一个类只能继承一个类。)

9. 接口        PreparedStatement是Statement的子接口,用于执行预编译的SQL语句。

10. java        Java程序源文件的扩展名为.class。(×)

 

单选题

错题:

1. 在Java中,以下构造方法的调用方式中,正确的是?(C)

A.按照一般方法调用

B.由用户直接调用

C.只能通过new自动调用

D.被系统调用

解释:在Java中,构造方法是在创建对象时自动调用的特殊方法。构造方法的主要作用是初始化对象的状态。因此,构造方法只能通过使用关键字"new"来创建对象时自动调用,而不能像普通方法一样直接调用或被系统调用。因此,选项C是正确的。

2. 数组与集合的描述不正确的是??()

A.数组是固定长度的;集合可变长度的。

B.数组可以存储基本数据类型,也可以存储引用数据类型;

C.集合可以存储基本数据类型,也可以存储引用数据类型;

D.数组存储的元素必须是同一个数据类型;集合存储的对象可以是不同数据类型。

精选:

3.下列哪一个关键字用于实现接口? (D)

A.extends(实现继承的关系)

B.interface(创建接口)

C.abstract(抽象)(public) abstract class 类名{}         (public) abstract (void) (mothod)();

D.implements(实现接口)

4.要想在集合中保存没有重复的元素并且按照一定的顺序排序,可以使用以下(D)集合。

A.LinkedList <<LinkedList同时实现了List接口和Deque对口,也就是收它既可以看作一个顺序容器,又可以看作一个队列(Queue),同时又可以看作一个栈(stack)>>

B.ArrayList(动态数组)

C.HashSet(哈希集)

D.TreeSet(使用红黑树数据结构来存储元素,这使得元素在集合中保持有序。)

5. trim()  

  1. 去除 String 中的首尾空格;
  2. 无法去除字符串中间含有空格的;

 

程序填空题

设计并实现类:VScode里

 

函数/编程题

VScode里

类设计(√)

接口(√)

多线程

异常

继承

主观题

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值