A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小鲁哥哥 于 2017-9-22 14:51 编辑

【济南中心】JavaEE基础班知识点整理


天地玄黄,宇宙洪荒。

如果你也和我一样看过不少网络小说,那你的想象力肯定很丰富,这点作为程序员是很重要的。

如果你和我一样喜欢《黑客帝国》《银河系漫游指南》《钢铁侠》《三体》《西部世界》。。。那有可能科幻就是你坚持钻研技术的动力来源。

虽然我们暂时不能像黑客帝国里一样进入虚拟世界,不能像邓肯一样到宇宙尽头餐馆吃饭,没有贾维斯的智能管家系统,也不能把机器人做的无法分辨真伪,但是如果没有人们对未来的想象我们的技术就没有了追求。

这些追求促使我们不断的学习,让技术不断的前进,我相信这些电影电视小说里的情节一定会实现。

抱有这样的期待和好奇很多同学来到黑马学习技术,首先接触的就是黑马的基础班。视频课程,讲义是必须的,但是我们还要有知识的梳理。今天我们就整理了基础班的一下问答和笔试题供大家交流学习。希望大家梳理一下自己的基础知识,基础知识是我们技术飞船的主架,主架坚固才能让我们在宇宙里航行的更远~


理论知识点

一、基础概念


1、面向对象的理解并举例
2、面向对象的三大特性,并分别阐述对每个特性的理解
3、阐述成员变量和局部变量的区别
4、构造方法的概念和作用,和一般方法的区别
5、静态代码块、构造代码块、构造方法的特点及执行顺序
6、描述类和对象的关系
7、创建对象的步骤   


二、IO流理论知识点:
1、io流的基本流都有哪些,简单说说基本流的体系
2、字节流和字符流的使用场景
3、拷贝文本文件一般会用到哪个流?为什么?
4、在io流中拷贝文件一般会用哪几个流?
5、在io流的拷贝过程中,通过while 循环读取字节进行拷贝,需要通过哪个流 的什么方法读取字节
6、File类的常用方法都有哪些?
7、遍历指定目录下的文件的所有名称,一般用什么方法?
8、在io流中一般常用的字符编码集都有哪些?简单阐述几种
9、在字符流中,带缓冲区的包装流都有哪一些?具体阐述
一下。
10、为什么read()方法返回值是int类型?
11、标准输入流和输出流是什么?

三、集合理论知识点
1、   集合的由来
2、   数组和集合的使用场景
3、   数组和集合的区别
4、   集合的遍历
5、   在迭代集合中元素时,可不可以通过集合对象的方法操作集合中的元素?
6、   List的三个子类的特点
7、   栈和队列数据结构
8、   List有三个儿子,在不同的场景分别应该使用谁呢?
9、   HashSet保证元素唯一的原理
10、  TreeSet两种排序方式
11、  list集合和set集合有什么区别?
12、  双列集合获取键和值的两种方式
13、  HashMap和Hashtable的区别
14、  Collection和Collections的区别?

四、反射理论知识点
1、   反射概述
2、   获取类的字节码文件三种方式

五、线程理论知识点
1、   线程的生命周期。
2、   多线程的使用场景是什么?
3、   简述通过Runnable实现多线程的步骤。
4、   线程和进程的区别是什么?
5、   一个线程从等待状态被唤醒后是直接进入运行状态么?
6、   实现多线程有几种方式?
7、   对常用的实现多线程的方法做一个对比。
8、   如何使用匿名内部类实现多线程?
9、   如何获取当前线程的名字?
10、  如何实现线程的等待和休眠?
11、  Sleep和Wait方法的可以传参数么?
12、  Sleep方法和Wait方法的参数代表什么意义?
13、  如何唤醒等待中的线程?
14、  同步代码块和同步方法的使用场景是什么?
15、  同步方法的锁对象是什么?
16、  对懒汉式和饿汉式做一个对比。
17、  什么是工厂设计模式?
18、  死锁产生的原因是什么?
19、  简述线程池的应用场景。
20、  Timmer类的使用场景。
21、  说一下你所学过的和线程安全有关并且是线程安全的类有哪些?



编程知识点

一、IO流编程知识点:
1、车库里有各种牌子的车,请根据这个生活中的案例用代码实现出来。
有一个garage类(车库类),里面有很多车,车库类有车名(name),车牌号(number),颜色(colour),价格(price)等属性。提示用户输入自己喜欢的三种车的车名,车牌号,颜色,价格。然后根据输入的车的价格的降序进行排序,将输出的结果存到根目录下的a.txt中。
比如: 路虎-京B8888-黑色-1200000

2、提示用户输入一串字符串,统计出字符串中每个字符出现的次数,将结果写入到a.txt中。

二、集合编程知识点:
1、按照以下需要实现相关功能,需求如下:
1)  分别键盘录入5个人的相关信息(姓名、年龄、性别)
2)  定义一个方法将键盘录入的相关信息封装成Person对象,把对象存储在集合中并且遍历输出Person对象所有相关信息。
3)  将集合中Person对象年龄大于60的对象删除并且将其相关信息输出到控制台上
2、已知有一Map集合,请实现如下需求:
      A:向map集合中添加3组数据,
        例如:1="woaijavajavaaiwo";   
2="woaiheima,b ";
      B: 提示用户录入编号及内容,然后将内容(value)进行反转
        //例如: 用户输入woaijava  存入顺序为avajiaow;
      C:将集合中的值写入到D:\\a.txt中。

三、线程编程知识点:
1、通过继承Thread类的方式创建两个线程 ,在Thread类的构造方法中指定线程的名字,开启线程并输出10次每次执行的是哪条线程。
2、用多线程知识完成模拟抢红包的过程, 5个人共抢10个红包,红包的金额0—6元不等(包含0和6),每个人相当于1个线程。在控制台打印出每个人抢到红包的总金额。
四、JDBC知识点:
利用SQLyog创建itheimadb数据库和stu表,表中字段有:name(varchar类型),age(int类型),java(double类型),c(double类型),oc(double类型),Chinese(double类型),并将以下数据添加到stu表中(以上操作均可以使用SQLyog完成);利用JDBC连接itheimadb数据库使用sql语句按要求完成以下功能
  
id
  
name
age
java
c
oc
chinese
1
zs
12
100
98
100
20
2
ls
24
50
51
92
100
3
andi
34
20
10
15
60
4
aliy
21
30
100
15
65
5
wn
11
80
21
87
12

a. 输出年龄在20岁以上的学员所有学科的总分
b. 将andi的java成绩改为100,C语言成绩改为60
c. 在控制台上打印出Java学科和c学科都是60分以下的学员姓名


参考答案:
一 1:
车库类
[AppleScript] 纯文本查看 复制代码
public class Garage {
        private String name;
        private String number;
        private String colour;
        private int price;

        public Garage(String name, String number, String colour, int price) {
                super();
                this.name = name;
                this.number = number;
                this.colour = colour;
                this.price = price;
        }
        public String getName() {
                return name;
        }
        public void setName(String name) {
                this.name = name;
        }
        public String getNumber() {
                return number;
        }
        public void setNumber(String number) {
                this.number = number;
        }
        public String getColour() {
                return colour;
        }
        @Override
        public String toString() {
                return "Garage [name=" + name + ", number=" + number + ", colour="
                                + colour + ", price=" + price + "]";
        }
        public void setColour(String colour) {
                this.colour = colour;
        }
        public int getPrice() {
                return price;
        }
        public void setPrice(int price) {
                this.price = price;
        }
}
示例代码:
[AppleScript] 纯文本查看 复制代码
public class Test01 {
        public static void main(String[] args) throws IOException {
                ArrayList<Garage> list = new ArrayList<>();
                System.out.println("请输入自己喜欢的三种车的车名,车牌号,颜色,价格");
                Scanner sc = new Scanner(System.in);
                for (int i = 0; i < 3; i++) {
                        String name = sc.next();
                         String number = sc.next();
                         String colour = sc.next();
                        int price = sc.nextInt();
                        // System.out.println(name+" "+number+" "+colour+" "+price);
                         Garage cars = new Garage(name,number,colour,price);
                        list.add(cars);
                        System.out.println("添加成功!");
                }
                for (int j = 0; j < list.size() - 1; j++) {         // 降序排列
                        for (int i = 0; i < list.size() - 1 - j; i++) {
                                Garage car1 = list.get(i);
                                Garage car2 = list.get(i + 1);
                                if (car1.getPrice() < car2.getPrice()) {
                                        list.set(i + 1, car1);
                                        list.set(i, car2);
                                }
                        }
                }
                BufferedWriter bf = new BufferedWriter(new FileWriter("a.txt"));
                for (int i = 0; i < list.size(); i++) {
                        bf.append(list.get(i).toString());
                        bf.newLine();
                        bf.flush();
                        // System.out.println(list.get(i).toString());
                }
                bf.close();
                System.out.println("信息已写入a.txt");
        }
}

一、2:
[AppleScript] 纯文本查看 复制代码
public class Test02 {
        public static void main(String[] args) throws IOException {
                System.out.println("请输入一个字符串");
                Scanner sc = new Scanner(System.in);
                String str = sc.next();
//                System.out.println(str);
                Set set = new HashSet();
                char[] chars = str.toCharArray();
                for (int i = 0; i < chars.length; i++) {
                        set.add(chars[i]);// 去重,
                }
                Map map = new HashMap();
                for (int i = 0; i < chars.length; i++) {
                        if (set.contains(chars[i]) && !map.containsKey(chars[i])) {
                                map.put(chars[i], 1);
                        } else if (set.contains(chars[i]) && map.containsKey(chars[i])) {
                                map.put(chars[i], (int) map.get(chars[i]) + 1);
                        }
                }
                BufferedWriter bw = new BufferedWriter(new FileWriter("a.txt"));
                for (Object key : map.keySet()) {
                        bw.append(key + "出现了" + map.get(key) + "次");
                        bw.newLine();
                        bw.flush();
                }
                bw.close();
                System.out.println("信息已写入a.txt");
        }
}

二、1
[AppleScript] 纯文本查看 复制代码
public class Test03 {
        public static void main(String[] args) {
                System.out.println("请输入5个人的相关信息:姓名,年龄,性别");
                ArrayList<Person> list = new ArrayList<>();
                for (int i = 0; i < 3; i++) {
                        Scanner sc = new Scanner(System.in);
                        String name = sc.next();
                        int age = sc.nextInt();
                        String sex = sc.next();
                        Person p = new Person(name, age, sex);
                        list.add(p);
                        System.out.println("添加成功!");
                }
                for (int i = list.size()-1; i >=0; i--) {
                        if (list.get(i).getAge() > 60) {
                                System.out.println(list.get(i)+"已删除");
                                list.remove(i);
                        }
                }
                for (int i = 0; i < list.size(); i++) {
                                System.out.println(list.get(i)+"---");
                }
        }
}

二、2
[AppleScript] 纯文本查看 复制代码
public class Test04 {
        public static void main(String[] args) throws IOException {
                Map<String,String> map = new HashMap<>();
                System.out.println("请输入编号及内容");
                for(int i=0;i<3;i++){
                        Scanner sc = new Scanner(System.in);
                        String str = sc.next();
                        String[] strs = str.split("=");
                        map.put(strs[0],strs[1]);
                        System.out.println("添加成功");
                }
                BufferedWriter bw = new BufferedWriter(new FileWriter("a.txt"));
                for(String key : map.keySet()){
                        StringBuffer sb = new StringBuffer(map.get(key));
                        String value= sb.reverse().toString();
                        bw.append(key + "=" + value);
                        bw.newLine();
                        bw.flush();
                }
                System.out.println("信息已写入a.txt");
                bw.close();
        }
}

三、1
[AppleScript] 纯文本查看 复制代码
public class Test05 {
        public static void main(String[] args) {
                MyThread m1 = new MyThread();
                Thread t1 = new Thread(m1, "003");
                Thread t2 = new Thread(m1, "004");
                t1.start();
                t2.start();
        }
}

class MyThread extends Thread {
        private int i = 10;

        public void run() {
                while (i > 0) {
                        synchronized (this) {
                                System.out.println(Thread.currentThread().getName());
                                i--;
                        }
                }
        }
}

三、2
[AppleScript] 纯文本查看 复制代码
public class Test06 {
        public static void main(String[] args) {

                People p = new People();
                Thread t1 = new Thread(p);
                Thread t2 = new Thread(p);
                Thread t3 = new Thread(p);
                Thread t4 = new Thread(p);
                Thread t5 = new Thread(p);
                t1.setName("t1");
                t2.setName("t2");
                t3.setName("t3");
                t4.setName("t4");
                t5.setName("t5");

                t1.start();
                t2.start();
                t3.start();
                t4.start();
                t5.start();

                while (!p.flag);
                for (Entry<String, Integer> entry : p.map.entrySet()) {
                        System.out.println(entry.getKey() + "抢了 " + entry.getValue() + "元");
                }
        }
}

class People extends Thread {
        Map<String, Integer> map = new HashMap();
        boolean flag = false;
        private int num = 10;

        public void run() {
                while (true) {
                        synchronized (this) {
                                if (num > 0) {
                                        try {
                                                Thread.sleep(100);
                                        } catch (InterruptedException e) {
                                                e.printStackTrace();
                                        }
                                        Random r = new Random();
                                        int money = r.nextInt(7);
                                        String name = Thread.currentThread().getName();
                                        if (!map.containsKey(name)) {
                                                map.put(name, money);
                                        } else if (map.containsKey(name)) {
                                                map.put(name, map.get(name) + money);
                                        }
                                        num--;
                                        System.out.println(num + " " + name + " " + money);
                                } else {
                                        flag = true;
                                        break;
                                }
                        }
                }
        }
}

四、sql命令

java代码:
[AppleScript] 纯文本查看 复制代码
public class Test07 {
        public static void main(String[] args) throws ClassNotFoundException,
                        SQLException {
                Class.forName("com.mysql.jdbc.Driver");
                String url = "jdbc:mysql://localhost:3306/itheima";
                String username = "root";
                String password = "123";
                Connection con = DriverManager.getConnection(url, username, password);
                // 插入一条数据
                Statement stat = con.createStatement();
                // int row =
                // stat.executeUpdate("INSERT INTO stu (sname,age,java,c,oc,chinese) VALUES('meng','26','80','8','100','20')");
                // System.out.println(row);

                // a筛选结果-输出年龄在20岁以上的学员所有学科的总分----------------------------------------------------
                ResultSet rst = stat.executeQuery("SELECT*FROM stu WHERE age >20");
                while (rst.next()) {
                        int sum = 0;
                        String name = rst.getString("sname");
                        sum = rst.getInt("java") + rst.getInt("c") + rst.getInt("oc")
                                        + rst.getInt("chinese");
                        System.out.println(name + "的总分是:" + sum);
                }
                rst.close();

                // b修改数据-
                // 将andi的java成绩改为100,C语言成绩改为60-------------------------------------------------
                int a = stat
                                .executeUpdate("UPDATE stu SET java = 100,c = 60 WHERE sname = 'andi'");

                // c.
                // 在控制台上打印出Java学科和c学科都是60分以下的学员姓名-----------------------------------------------
                ResultSet rst2 = stat
                                .executeQuery("SELECT sname FROM stu WHERE java <60 AND c < 60");
                while (rst2.next()) {
                        System.out.println("Java学科和c学科都是60分以下的学员姓名 "
                                        + rst2.getString("sname"));
                }
                rst2.close();

                // // d.
                // 输出java,c,oc,chinese这四科的平均分-------------------------------------------------
                // ResultSet rst3 = stat
                // .executeQuery("SELECT AVG(java),AVG(c),AVG(oc),AVG(chinese) FROM stu");
                // while (rst3.next()) {
                // System.out.println("java平均分:" + rst3.getInt(1) + "\nc平均分:"
                // + rst3.getInt(2) + "\noc平均分:" + rst3.getInt(3)
                // + "\nchinese平均分:" + rst3.getInt(4));
                // }
                // rst3.close();

                stat.close();
                con.close();
        }
}

5 个回复

倒序浏览
回复 使用道具 举报
非常不错
回复 使用道具 举报
回复 使用道具 举报
正要学习拿去看看!
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马