重温JavaSE(为JavaEE项目开发做准备)

想要拥有从未拥有的东西,就要去做从未做过的事情

                                                                                                ——文记


目录

一、认识java

1.什么是java?你是如何理解java?

2.如何解释 jdk、API文档、JVM、垃圾回收机制?

二、理解java

3.提问 :package的作用是什么?

4.提问:java和javac命令的作用?

5.编写:使用idea创建java项目,编写可以运行的程序

三、注释、标识符、关键字、变量

6.提问:你为什么要在代码中添加注释?添加过多的注释会导致打包后的项目增大吗?

7.提问:使用标识符时需要注意什么?

 8.提问:列举你常用的关键字,并说明关键字的作用是什么?

9.提问:变量在程序中的作用?

 10.提问: 变量的种类有哪些?

四、操作符、流程控制

11.提问:操作符的分类

12.提问: 流程控制中for与while在循环场景中如何选择?

 13.提问:分支语句中if语句和switch语句在逻辑判断场景中如何选择?

14.使用分支语句实现判断数值是否大于0?

五、数组

15.提问: 数组的特点是什么?你在编写java程序中为什么使用数组?

六、类和对象(重点)

16.提问:类和对象的关系是什么?

17.提问:什么是引用?作用是什么?

18.提问:举生活中的例子说明引用、对象、类之间的关系

19.提问: 如果现在需要将我们教室里同学和老师的信息存储到计算机中,如何编码实现?

七、封装、继承、多态(重点)

20.提问: 如何理解封装?封装的优点是什么?

21.提问: 继承是在描述什么内容?

22.提问:继承的优点是什么?

23.提问:java中是否存在一个类,它是没有父类型的?

24.提问:在子类创建对象时,会不会调用父类的构造器?为什么?

25.提问:如何编写代码表示多态?

八、重写、重载

26.提问: 在java哪个类中有方法的重载?

27.提问: 你在编程中如何使用重写的语法?

28.提问: 你在编程中如何使用重载的语法?

九、静态、抽象、接口

29.提问:静态与非静态的区别是什么?

30.提问:什么业务场景下会定义抽象方法?

31.提问:什么时候需要定义接口?如何用一个词解释接口?

十、集合、泛型

32.提问:画图描述你了解的集合知识结构

 33.提问: 以下信息如果保存在java程序中,选择集合框架中的哪个类进行处理?

          34.提问: 泛型在集合中使用的作用?

         35.提问:ArrayList和LinkedList的区别是什么?

          36.提问: HashMap是如何实现存储数据?

十一、枚举、反射

37.编写程序使用反射机制创建对象

38.思考:反射机制可以为java程序提供什么好处?

十二、异常

39.提问: 你在编程过程中遇到过哪些异常?是什么原因导致的异常?

40.提问:什么情况下需要我们自定义异常?

41.任务: 定义一个异常类,描述用户登录过程中出现的异常情况:

十三、IO流

43.提问?使用io流可以解决什么问题?

44.使用画图方式分类表示java.io包中类

十四、网络编程

46.提问:可以直接通过浏览器访问的javaweb项目一定需要网络编程代码吗?如果需要,我们每 次开发一个javaweb项目需要编写一个服务器程序吗?

47.提问:你接触过哪些通过java编写的服务器程序吗?

十五、线程

48.编写程序实现线程的创建和运行?

 49.如果将网络编程章节的服务器程序扩展为一个多线程服务器,如果实现?能够解决什么问题?


一、认识java

1.什么是java?你是如何理解java

  • Java是一门面向对象的编程语言,具有面向对象思想、跨平台(OS)、简单、强类型的语言
  • 可以定义变量
  • 标识数值
  • 半编译半解释执行

2.如何解释 jdkAPI文档、JVM、垃圾回收机制

执行Java命令 jvm  开辟内存:存放程序信息、数据

垃圾回收机制:在某个内存(堆)不会再使用Java对象   自动销毁释放程序内存。不需要靠手动

二、理解java

3.提问 :package的作用是什么?

 

4.提问:javajavac命令的作用?

5.编写:使用idea创建java项目,编写可以运行的程序

三、注释、标识符、关键字、变量

6.提问:你为什么要在代码中添加注释?添加过多的注释会导致打包后的项目增大吗?

7.提问:使用标识符时需要注意什么?

 8.提问:列举你常用的关键字,并说明关键字的作用是什么?

9.提问:变量在程序中的作用?

 10.提问: 变量的种类有哪些?

package com.briup.day01;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 变量的种类划分
 * 1.通过位置划分变量:
 *   全局变量
 *   局部变量
 * 2.通过类型划分:
 *   基本数据类型
 *   引用数据类型
 * @Author lining
 * @Date 2022/6/30
 */
public class Test5 {
    private int a;//成员变量 属性 全局变量 定义在类的内部,方法外边
    private int d;//全局变量 默认初始化 =0

    public void method(){
        int b = 2;//局部变量,定义在方法中
        System.out.println(b);//调用局部变量
        int c;
        System.out.println(a);
       // System.out.println(c); 使用局部变量,必须初始化后使用
    }
    public void method2(){
        System.out.println(a);//调用全局变量
        //System.out.println(b);局部变量只能在定义的范围内使用
    }
    public void method3(){
        //基本数据类型 整型  byte<short<int<long
        // 浮点型 : float< double
        // 布尔类型 boolean
        //字符类型 char
        byte a = 1;
        float f = 1.0f;
        double d = 2.3;
        boolean flag = true;
        char c = 'a';
    }
    public void method4(){
        //引用数据类型: 类类型(class) 接口类型(interface) 数组类型(xxx[])
        //表示一个学生 使用类类型
        Student s = new Student();
        //表示一个字符串
        String str = "ABC";
        //表示很多的学生信息?使用什么接口类型表示
        List<Student> studentList = null;
        Set<Student> studentSet = null;
        Map<Integer,Student> studentMap = null;
        Student[] students = null;
    }

}

四、操作符、流程控制

11.提问:操作符的分类

12.提问: 流程控制中forwhile在循环场景中如何选择?

for循环更偏重于从头到尾的范围的便利,如遍历一个数组。

while循环,更偏重于满足于某个条件下的数据的处理。


        int [] arrray={1,2,3};
        int i=0;
 
       // for (i = 0; i < arrray.length-1; i++) {
            //处理数据
        //}
 
        //for 转while
        while(i<arrray.length-1){
            i++;
            //处理数据
        }


  public int search(int[] nums, int target) {
          //边界判断
    
        int left=0;
        int right=nums.length-1;
 
        // while (left<=right) {
        //     int index=(right +left)/2;
        //     int current = nums[index];
        //     if (current > target) { //左移
        //         right=index-1;
        //     } else if (current < target) {//右移
        //         left=index+1;
        //     } else {//返回下标
        //         return index;
        //     }
        // }
           
           //while转for
          for (;left<=right;) {
            int index=(right +left)/2;
            int current = nums[index];
            if (current > target) { //左移
                right=index-1;
            } else if (current < target) {//右移
                left=index+1;
            } else {//返回下标
                return index;
            }
        }
        return -1;
 
    }

 13.提问:分支语句中if语句和switch语句在逻辑判断场景中如何选择?

if选择语句和switch选择语句的比较:

  1. 1.switch语句只支持常量值相等的分支判断,而if语句支持更为灵活,任意布尔表达式均可;
  2. 2.switch语句通常比一系列嵌套if语句效率更高;逻辑更加清晰

switch语句和if语句的各自使用场景

  1.  1.switch建议判断固定值的时候用
  2.  2.if建议判断区间或范围的时候用    
  3. 3.*用switch能做的,用if都能做,单反过来则不行

14.使用分支语句实现判断数值是否大于0?

if...if   if...else   if...elseif  if四种

五、数组

15.提问: 数组的特点是什么?你在编写java程序中为什么使用数组?

六、类和对象(重点)

16.提问:类和对象的关系是什么?

 

 

17.提问:什么是引用?作用是什么?

 

 

18.提问:举生活中的例子说明引用、对象、类之间的关系

19.提问: 如果现在需要将我们教室里同学和老师的信息存储到计算机中,如何编码实现?

public class TestClassroom {
    public static void main(String[] args) {
        //现在需要将我们教室里同学和老师的信息存储到计算机中,如何编码实现?
        new TestClassroom().method();
    }
    public void method2(){
        //1.创建教室类对象
        Classroom classroom = new Classroom("401教室");
        //2.创建教师对象
        Teacher t = new Teacher(1, "lining");
        //3.创建多个学生对象
        Student s = new Student(202201, "jack");
        Student s2 = new Student(202202, "tom");
        Student s3 = new Student(202203, "bob");
        //4.将teacher对象和student对象保存教室对象中
        classroom.setTeacher(t);
        Student[] stus = new Student[3];
        stus[0] = s;
        stus[1] = s2;
        stus[2] = s3;
        classroom.setStudents(stus);
        //5.打印classroom对象查看信息
        System.out.println(classroom);//toString()
    }
    public void method(){
        //能不能不创建自定义的类实现程序保存信息:
        String msg = "xxxx教室xxx老师xxx学生";
        //利用集合将信息保存集合对象中:
        //表示一个老师:
        Map<Integer, String> t = new HashMap<>();
        t.put(1,"lining");//key=value
        //表示一个学生
        Map<String, String> s = new HashMap<>();
        s.put("202001","jack");
        Map<String, String> s2 = new HashMap<>();
        s2.put("202002","tom");
        //将老师和学生存储在一个集合对象中
        List<Object> list = new ArrayList<>();
        list.add(t);
        list.add(s);
        list.add(s2);
        //最后定义一个教室信息对象
        Map<String, List> classroom = new HashMap<>();
        classroom.put("401教室",list);
        System.out.println("教室信息:"+classroom);
    }
}

七、封装、继承、多态(重点)

20.提问: 如何理解封装?封装的优点是什么?

面向对象编程语言,需要对现实世界中的事物进行抽象、模拟。现实世界中的对象属性,都是隐藏
在对象内部的,外界无法直接操作和修改。
封装的优点:
1. 提高代码的安全性,重要信息可以私有化,不对外暴露
2. 提高代码的复用性,常用的代码或者功能封装到方法中,可以在其他地方反复调用
3. 封装代码的实现细节,便于修改内部代码,提高可维护性
4. 简化外部的调用,便于调用者使用

21.提问: 继承是在描述什么内容?

类和类之间的关系有很多中,继承就是其中一种关系 。
继承描述的是事物之间的所属关系,这种关系是:
is-a 的关系。
子类继承父类,子类就可以继承父类中定义的属性和方法 。

22.提问:继承的优点是什么?

多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么这些类(子类)就不需要
再定义这些属性和行为,只要继承同一个类(父类),它们就可以直接访问父类中的非私有的属性
和方法。
提高代码的复用性。
类与类之间产生了关系(is a),这是使用多态特性的前提。

23.提问:java中是否存在一个类,它是没有父类型的?

java.lang.Object

24.提问:在子类创建对象时,会不会调用父类的构造器?为什么?

会,因为子类对象可以调用父类中的成员属性,子类构造器默认会调用父类的无参构造器对父类的
属性进行初始化。

25.提问:如何编写代码表示多态?

相同类型的不同对象,调用同一个方法,最终执行结果是不同的。
父类引用可以指向不同的子类对象 。
接口引用可以指向不同的实现类对象。

八、重写、重载

26.提问: 在java哪个类中有方法的重载?

类中有多个方法,具有相同的方法名,但是方法的参数各不相同,这种情况被称为方法的重载
java.lang.String 类中的 valueOf 方法

27.提问: 你在编程中如何使用重写的语法?

如果子类和父类中出现了相同的方法,这种情况就叫做方法重写 (Override)
Servlet 编程中通过继承 HttpServlet 后,重新 doGet doPost 方法

28.提问: 你在编程中如何使用重载的语法?

类中有多个方法,具有相同的方法名,但是方法的参数各不相同,这种情况被称为方法的重载
(overload)
方法功能相同,但参数类型和个数不同的情况下,通常使用重载的语法

九、静态、抽象、接口

29.提问:静态与非静态的区别是什么?

静态属性是属于类的,只要类加载到内存了,就可以使用类名来访问。非静态属性是属于对象的,
只有创建出对象了,使用对象才可以访问。
类加载完成之后,就可以直接使用类名访问静态属性和静态方法。创建对象之后,才可以使用对象
访问非静态属性和调用非静态方法。

30.提问:什么业务场景下会定义抽象方法?

抽象类是用来被子类继承的,子类继承抽象类,并且实现抽象类中的抽象方法。所以,当前我们遇
到一个抽象类的时候,第一反应,应该是这个类肯定需要被继承,然后实现里面的抽象方法,或者
重写里面的普通方法。

31.提问:什么时候需要定义接口?如何用一个词解释接口?

  1. 接口是除了类和数组之外,另外一种引用数据类型
  2. 接口和类不同,类的内部封装了成员变量、构造方法和成员方法,而接口的内部主要就是封装了方法和静态常量。
  3. 接口的定义和类很类似,但是接口需要使用 interface 关键字来定义
  4. 接口最终也会被编译成.class文件,但一定要明确接口并不是类,而是另外一种引用数据类型

十、集合、泛型

32.提问:画图描述你了解的集合知识结构

 

 33.提问: 以下信息如果保存在java程序中,选择集合框架中的哪个类进行处理?

表格1

 表格2

34.提问: 泛型在集合中使用的作用?

如果在使用集合的时候,给泛型参数指定了具体类型,那么就会防止出现类型转换异常的情况,因
为这时候集合中添加的数据已经有了一个规定的类型,其他类型是添加不进来的。

35.提问:ArrayListLinkedList的区别是什么?

通过阅读源码比较区别了解: ArrayList 底层通过数组实现的, LinkedList 底层是通过双向链表实现
的。

36.提问: HashMap是如何实现存储数据?

通过阅读源码画出 hashMap 原理图

十一、枚举、反射

37.编写程序使用反射机制创建对象

38.思考:反射机制可以为java程序提供什么好处?

动态 :反射机制允许程序在运行期间够动态获取当前类和对象的所有属性和方法的能力 , 可以动态创建
对象,执行方法 , 给对象的属性赋值等操作能力。许多 框架 底层都使用了反射这种机制来实现动态效
果。

十二、异常

39.提问: 你在编程过程中遇到过哪些异常?是什么原因导致的异常?

package com . briup . day01 ;
public class TestReflect {
public static void main ( String [] args ) throws Exception {
// 获取类的全限定名
String className = "com.briup.day01.Student" ;
// 获取字节码对象
Class <?> c = Class . forName ( className );
// 利用字节码对象创建 Student 对象
Object obj = c . newInstance ();
}
}
//Student
class Student {} java.lang.NullPointerException :空指针异常
java.lang.ClassNotFoundException :类找不到异常
java.lang.ArithmeticException :算术异常
java.lang.ArrayIndexOutOfBoundsException :数组下标越界异常
java.lang.ClassCastException :类型强制转换异常
java.sql.SQLException :操作数据库异常
java.io.IOException IO 输入输出异常
java.io.FileNotFoundException :文件找不到异常

40.提问:什么情况下需要我们自定义异常?

JavaAPI 中已经存在的异常类,都是当年 sun 公司提前定义好的,它们分别表示着某一种已知的异常
情况。但是,在我们开发的系统中,大多数业务功能里面总会出现一些新的异常情况,而这些异常
情况,当年 sun 公司定义异常类型的时候,肯定是想不到的 在实际开发中,我们会自定义一些异常
的类型,用来表示当前出现的异常情况。

41.任务: 定义一个异常类,描述用户登录过程中出现的异常情况:

1. 用户名错误 2. 密码错误 3. 账号被锁定

 

十三、IO

43.提问?使用io流可以解决什么问题?

解决 java 程序的输入输出问题

44.使用画图方式分类表示java.io包中类

 

十四、网络编程

45. 编写一个服务器程序,实现和浏览器程序进行请求和响应

 

46.提问:可以直接通过浏览器访问的javaweb项目一定需要网络编程代码吗?如果需要,我们每 次开发一个javaweb项目需要编写一个服务器程序吗?

需要。网络编程代码实现了 java 程序通过网络与其他程序进行通信。
不需要。我们可以将服务器程序封装起来,通过定义一个规则(
Servlet )实现调用 java 项目中的方法。

47.提问:你接触过哪些通过java编写的服务器程序吗?

tomcat

十五、线程

48.编写程序实现线程的创建和运行?

 49.如果将网络编程章节的服务器程序扩展为一个多线程服务器,如果实现?能够解决什么问题?

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

登登登__

期待每一份真诚

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值