为何Java让我如此沉迷

JavaSE


2022/4/24 星期天

  • 1.Java的初步认识。
  • 2.博客的重要性和创立。
  • 3.Markdown语法的学习。
  • 4.常用快捷键,例如:
    1.Ctrl+shift+Esc 切出任务管理器。
    2.Win+E我的电脑。

在这里插入图片描述


2022/4/25 星期一

  1. Java的环境安装。
  2. IDEA的安装。
  3. 破解了它!!很有成就感。
  4. 人生第一个Java代码(成功的一小步!)。
public class wodetian {
    public static void main(String[] args){
        System.out.println("Hello,world!");
}

}
`
5. 快捷键 1.psvm2.sout。
6. 怎么配置一个空环境的Java。
7. 单行注释// 多行注释/* */。
8. 标识符(关键字)。
在这里插入图片描述
9. String 是字符串类型


2022/4/26
1.eg:long float 后面分别要加个30L 50.1F。
2.boolean 只是ture 或 false。
3.在打印函数时,可以用 f == d 来判断。
4.类变量就是放在上面的常量,那个地方都可以用的到。eg:static(静态的),不像局部变量,只能在局部用。
5.实例变量就是文件名.name(有点像结构体)。
6.常量 final。
7.变量的命名规范
在这里插入图片描述
8.!!!ctrl + D 复制当前到下一行!!!ctrl + z 回到上次操作。
9.++和-- 注意在前还是在后,是自加自减的作用,不赋值。
10.&& || 都是自右向左(注意短路现象)。
11.位运算(效率极高)
12. 包机制在这里插入图片描述
定义包:package
引用包:import


2022/4/27
1.Scanner对象next()和nextLine()的区别。
2.输出字符时+号是连接符。
3.Scanner有两步。一个是建立扫描,第二个是扫到的什么数据赋值给一个已定义的常量。
4.无视类型的扫描数据(scanner.nextLine)。.
5.//println 输出完,会换行。
//print 输出完,不换行。
6.for快捷键 9.f(条件是9)。
7."\t"是空格。
8.增强for循环 for(int x:numbers)


2022/4/28
1.方法的创立和使用(类似于函数,来完成特定功能的代码片段)。
2.方法的重载。
3.可变参数 (…)。
4.递归函数:
推过去,再拉回来。


2022/4/29
1.Arrays类eg:
—Arrays.toString() 打印数组。
—Arrays.sort() 排序数组(升序)。
2.类(class)。
一个类里边只有属性和方法(一个功能)。

3.静态(static,和类一起加载的)和非静态(实例化这个类,通过new之后在存在)。
4.new 让一个类或类的方法实例化(创建对象)!!非常重要。
new 类名 方法名(可以不加)。

思考(扫描器):new Scanner(); 因为Scanner就是一个类了,也只有一个方法,所以没有那个点。
Scanner scanner = new Scanner();创造对象+类名加命名
意思就是new一个扫描器的方法给一个扫描器类型的扫描器(系统自己命名的,可以改)。


2022/4/30
1.值传递和引用传递(对象):本质还是值传递!!。
2.this 调用本类的方法。
3.使用new关键字,本质是在调用构造器。
4.构造器的含义(最简洁的方法,只有修饰名+名字)。
pubic MyFrame(){
}


2022/5/1
1.封装 快捷键 Alt+Ins。(调用一个写好的方法,输入参数就可以了)
2.继承 extends 所有的类默认继承object。
3.super 重新构造用父类的方法。
4.重写(子类重写父类的方法,执行子类的方法)(用的是非静态)。
快捷键 ctrl+o。
//Student 能调用的方法都是自己的或者继承父类的!
//Person 父类型,可以指向子类,但是不能调用子类独有的方法。
5.指令 instanceof 判断两个类是不是父子关系。
6.抽象类(abstract),需要它的子类去写它的东西,这里不是重写,抽象类也可以有抽象方法,注意不能new这个抽象类,只能通过子类去实现它(约束)。------引入接口哈哈哈。
7.extends :单继承~ ,但接口可以多继承。
8.interface 接口 接口只能定义且都需要实现类,并且需要全部重写接口的方法。
9.快速注释 Ctrl+Shift+/


2022/5/2
1.接口不能被实例化,接口中没有构造方法~
2.内部类可以访问外部类的私有属性,但是要注意静态和非静态是不一样的哈。
3.异常 try catch(从小到大)finally
快捷键 Ctrl+Alt+T
4.抛出异常 方法内是 thow 方法外是thows


2022/5/3
一.GUI核心技术:Swing AWT
1.因为界面不美观。
2.需要jre环境!
为什么我们要学习?
1.可以写出自己心中想要的一些小工具
2.工作时候,也可能需要维护到swing界面,概率极小!
3.了解MVC架构,了解监听!
二.常用单词
请添加图片描述
三.
1.认识到封装的重要性
2.Frame的相关知识


2022/5/4
1.Panel(面板)
2.监听事件(窗口关闭),引入适配器

 frame.addWindowListener(new WindowAdapter() {
            //窗口点击关闭的时候需要做的事情
            @Override
            public void windowClosing(WindowEvent e) {
                //结束程序
                System.exit(0);
            }
        });

3.3种布局管理器
流式布局FlowLayout
东西南北中BorderLayout
表格布局TestGridLayout


2022/5/5
1.布局小练习

package com.kuang.lesson01;
import javax.swing.*;
import java.awt.*;
public class ExDemo {
    public static void main(String[] args) {
        //总 Frame
        Frame frame = new Frame();
        frame.setBounds(300,400,400,300);
        frame.setBackground(Color.BLACK);
        frame.setVisible(true);
        frame.setLayout(new GridLayout(2,1));
        //4个面板
        //上面的
        Panel p1 = new Panel(new BorderLayout());
        Panel p2 = new Panel(new GridLayout(2, 1));
        Panel p3 = new Panel(new BorderLayout());
        Panel p4 = new Panel(new GridLayout(2,2));
        p1.add(new Button("East-1"),BorderLayout.EAST);
        p1.add(new Button("West-1"),BorderLayout.WEST);
        p2.add(new Button("P2-1"));
        p2.add(new Button("P2-2"));
        p1.add(p2,BorderLayout.CENTER);
        //下面的
        p3.add(new Button("East-2"),BorderLayout.EAST);
        p3.add(new Button("West-2"),BorderLayout.WEST);
        //中间4个
        for (int i = 0; i < 4; i++) {
            p4.add(new Button("for-"+i));
        }
        p3.add(p4,BorderLayout.CENTER);
        frame.add(p1);
        frame.add(p3);
        frame.addWindowListener(new WindowAdapter() {
            //窗口点击关闭的时候需要做的事情
            @Override
            public void windowClosing(WindowEvent e) {
                //结束程序
                System.exit(0);
            }
        });
    }
}

总结:
1.Frame是一个顶级窗口
2.Panel无法单独显示,必须添加到某个容器。
3.布局管理器
1.流式
2.东西南北中
3.表格
4.大小,定位,背景颜色,可见性,监听!
5.按钮的监听事件
2022/5/7
1.写程序,最好写成一个主类(main),再去写其他的类,然后用new调用
2022/5/8
第一个计算器

package com.kuang.lesson02;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class TestCalc {
    public static void main(String[] args) {
        new Calculator();
    }
}
//计算机类
class Calculator extends Frame {
    public Calculator(){
        //三个文本框
        setTitle("我的第一个计算器");
        TextField num1 = new TextField();
        TextField num2 = new TextField();
        TextField num3 = new TextField();
        //一个按钮
        Button button = new Button("=");
        button.addActionListener(new MyCalaculatorListener(num1,num2,num3));
        //1个标签
        Label label = new Label("+");
        //布局
        setLayout(new FlowLayout());
        add(num1);
        add(label);
        add(num2);
        add(button);
        add(num3);
        pack();
        setVisible(true);
    }
}
//监听器类
class MyCalaculatorListener implements ActionListener{
    //获取三个变量
    private TextField num1,num2,num3;
    public MyCalaculatorListener(TextField num1,TextField num2,TextField num3) {
        this.num1 = num1;
        this.num2 = num2;
        this.num3 = num3;
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        //1.或的加数和被加数
        int n1 = Integer.parseInt(num1.getText());
        int n2 = Integer.parseInt(num2.getText());

        //2.将这个值 + 法运算后,放到第三个框
        num3.setText("" + (n1 + n2));

        //3.清楚前两个框
        num1.setText("");
        num2.setText("");
    }
}

改进方法:1.面向对象在这里插入图片描述
2.内部类的方法去调用!!!
private
2022/5/9
第一个画图工具(鼠标监听,窗口画图工具)

package com.kuang.lesson03;

import com.sun.org.apache.xerces.internal.xinclude.XPointerSchema;

import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.Iterator;

public class TestMouseListener {
    public static void main(String[] args) {
    new MyFrame("画图");
    }
}
class MyFrame extends Frame{
    //画画需要画笔,需要监听鼠标当前的位置,需要集合来存储这个点
    ArrayList  points;
    public MyFrame(String title)  {
        super(title);
        setBounds(200,200,400,300);
        //存鼠标点击的点
        points = new ArrayList<>();
        setVisible(true);
        //鼠标监听器,正对这个窗口
        this.addMouseListener(new MyMouseListener());
    }

    @Override
    public void paint(Graphics g) {
        //画画,监听鼠标的事件
        Iterator iterator = points.iterator();
        while(iterator.hasNext()){
            Point point = (Point) iterator.next();
            g.setColor(Color.BLUE);
            g.fillOval(point.x,point.y,10,10);
        }
    }
    //添加一个点到界面上
    public void addPaint(Point point){
        points.add(point);
    }
    private class MyMouseListener extends MouseAdapter {
        //鼠标按下 弹起 ,按住不放

        @Override
        public void mousePressed(MouseEvent e) {
            MyFrame frame = (MyFrame) e.getSource();
            //这个我们点击的时候,就会在界面上残剩一个点!画
            //这个点就是鼠标的点:
            frame.addPaint(new Point(e.getX(),e.getY()));
            //每次点击鼠标都需要重写画一偏
            frame.repaint();//刷新
        }
    }
}

思路很重要
在这里插入图片描述
2022/5/10
1.键盘监听

package com.kuang.lesson03;


import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

public class TestKeyListener {
    public static void main(String[] args) {
        new KeyFrame();
    }
}
class KeyFrame extends Frame{
    public KeyFrame(){
        setBounds(1,2,300,400);
        setVisible(true);
        this.addKeyListener(new KeyAdapter() {
            //键盘按下
            @Override
            public void keyPressed(KeyEvent e) {
                //获得键盘下的键是哪一个,当前的码
                int keyCode = e.getKeyCode();//不需要去记录这个数值,直接使用静态属性 VK_XXX
                System.out.println(keyCode);
                if (keyCode == KeyEvent.VK_UP){
                    System.out.println("你拉下了上键");
                }
            }
        });
    }
}

2.用swing写JFrame窗口

import javax.swing.*;
import java.awt.*;

public class JFrameDemo {
    public static void main(String[] args) {
        //init():初始化
        new MyJframe2().init();
    }
}

    class MyJframe2 extends JFrame {
        public void init() {
            //关闭窗口
            this.setBounds(10, 10, 200, 300);
            this.setVisible(true);
            JLabel label = new JLabel("徐洪勇真帅");
            this.add(label);
            //让文本标签居中,设置水平对齐
            label.setHorizontalAlignment(SwingConstants.CENTER);
            //获得一个容器
            Container container = this.getContentPane();
            container.setBackground(Color.yellow);
        }
}

2022/5/11
1.图像标签

import javax.swing.*;
import java.awt.*;
import java.net.URL;

public class ImageIconDemo extends JFrame {
    public ImageIconDemo(){
        //获取图片的地址
        JLabel label = new JLabel("ImageIcon");
        URL url = ImageIconDemo.class.getResource("捕获2.PNG");
        ImageIcon imageIcon = new ImageIcon(url);//命名不要冲突了
        label.setIcon(imageIcon);
        label.setHorizontalAlignment(SwingConstants.CENTER);
        Container container = getContentPane();
        container.add(label);
        setVisible(true);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setBounds(200,100,200,200);
    }

    public static void main(String[] args) {
        new ImageIconDemo();
    }
}

2.文本域

import javax.swing.*;
import java.awt.*;

public class JScrollDemo extends JFrame {
    public JScrollDemo(){
        Container container = this.getContentPane();
        //文本域
        JTextArea textArea = new JTextArea(20,50);
        textArea.setText("欢迎学习狂神说Java");
        //Scroll面板
        JScrollPane scrollPane = new JScrollPane(textArea);
        container.add(scrollPane);
        this.setVisible(true);
        this.setBounds(100,100,300,350);
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
    public static void main(String[] args) {
        new JScrollDemo();
    }
}

2022/5/12

一 GUI结束!!!
实战项目:贪吃蛇
代码

```java
public class StartGame {
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setBounds(10,20,900,720);
        frame.setResizable(false);//窗口大小不可变
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        //正常的游戏界面都应该在面上!
        frame.add(new GamePanel());
        frame.setVisible(true);
    }
}
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Random;

public class GamePanel extends JPanel implements KeyListener, ActionListener {
    //定义蛇的数据结构
    int length;//蛇的长度
    int[] sankeX = new int[600];//蛇的坐标 25*25
    int[] sankeY = new int[500];//蛇的坐标 25*25
    String fx;
    //食物的坐标
    int foodx;
    int foody;
    Random random = new Random();
    int score;//成绩
    //游戏当前的状态: 开始 停止
    boolean isStart = false;//默认是停止
    boolean isFall = false; //默认是失败状态
    //定时器 以ms为单位 1000ms = 1s;
    Timer timer = new Timer(100,this);//100ms执行一次!

    //利用构造器,调用的时候就被自动被初始化
    public GamePanel() {
        init();
        //获得焦点和键盘事件
        this.setFocusable(true);//获得焦点事件
        this.addKeyListener(this);//获得键盘监听事件
        timer.start();//游戏一开始定时器启动
    }
    //初始化方法
    public void init(){
        length = 3;
        sankeX[0] = 100;sankeY[0] = 100; //脑袋的坐标
        sankeX[1] = 75;sankeY[1] = 100;  //第一个身体的坐标
        sankeX[2] = 50;sankeY[2] = 100;  //第二个身体的坐标
        fx = "R" ;
        //把食物随机分布在界面上
        foodx = 25 +25*random.nextInt(34);
        foody = 75 +25*random.nextInt(24);
        score = 0;
    }
    //绘制面板,我们游戏中的所有东西,都是用这个画笔来画
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);//清屏
        //绘制静态的面板
        this.setBackground(Color.white);
        Data.header.paintIcon(this,g,25,11);//头部广告栏画上去
        g.fillRect(25,75,850,600);//默认的游戏界面
        //画积分
        g.setColor(Color.WHITE);
        g.setFont(new Font("微软雅黑",Font.BOLD,18));
        g.drawString("长度"+length,750,35);
        g.drawString("分数"+score,750,55);
        //画食物
        Data.food.paintIcon(this,g,foodx,foody);
        //把小蛇画上去
        if(fx.equals("R"))  {
            Data.right.paintIcon(this,g,sankeX[0],sankeY[0]);//蛇头初始化向右,通过方向来判断
        }else  if(fx.equals("L")) {
            Data.left.paintIcon(this, g, sankeX[0], sankeY[0]);//蛇头初始化向右,通过方向来判断
        }else  if(fx.equals("U")) {
            Data.up.paintIcon(this, g, sankeX[0], sankeY[0]);//蛇头初始化向右,通过方向来判断
        }else  if(fx.equals("D")) {
            Data.down.paintIcon(this, g, sankeX[0], sankeY[0]);//蛇头初始化向右,通过方向来判断
        }
            for(int i =1 ;i < length ;i++ ) {
            Data.body.paintIcon(this,g,sankeX[i],sankeY[i]);//第二个身体的坐标
        }

        //游戏状态
        if(isStart == false){
            g.setColor(Color.WHITE);
            g.setFont(new Font("微软雅黑",Font.BOLD,40));//设置字体
            g.drawString("按下空格开始游戏",300,300);
        }
        if(isFall){g.setColor(Color.RED);
            g.setFont(new Font("微软雅黑",Font.BOLD,40));//设置字体
            g.drawString("失败,按下空格重新开始",300,300);
        }
    }

    @Override
    public void keyTyped(KeyEvent e) {

    }
    //键盘监听事件
    @Override
    public void keyPressed(KeyEvent e) {
        int keyCode = e.getKeyCode();
        if (keyCode == KeyEvent.VK_SPACE) {//如果按下的是空格键
            if(isFall){
                //重新开始
                isFall = false;
                init();
            }else {
                isStart = !isStart;//取反
            }
        }
        //小蛇移动
        if(keyCode == KeyEvent.VK_UP){
            fx = "U";
        }else if(keyCode ==KeyEvent.VK_DOWN){
            fx = "D";
        }else if(keyCode ==KeyEvent.VK_LEFT){
            fx = "L";
        }else if(keyCode ==KeyEvent.VK_RIGHT){
            fx = "R";
        }
    }
    @Override
    public void keyReleased (KeyEvent e){ }
    //事件监听 --- 需要通过固定事件来刷新,1s=10次
    @Override
    public void actionPerformed(ActionEvent e) {
        if(isStart && isFall == false){//如果游戏是开始状态,就让小蛇动起来!
            //吃食物
            if(sankeX[0]==foodx && sankeY[0]==foody){
                length++;//长度+1
                //分数加10
                score = score +10;
                //再次随机食物
                foodx = 25 +25*random.nextInt(34);
                foody = 75 +25*random.nextInt(24);
            }
            //右移
            for (int i = length - 1; i > 0; i--) {//后一节移到前一节的位置
                sankeX[i] = sankeX[i-1];
                sankeY[i] = sankeY[i-1];
            }
            //走向
            if(fx.equals("R")){
                sankeX[0] = sankeX[0] +25;
                //边界判断
                if(sankeX[0]>850)sankeX[0] = 25;
            }
            if(fx.equals("L")){
                sankeX[0] = sankeX[0] -25;
                if(sankeX[0]<25)sankeX[0]=850;
            }
            if(fx.equals("U")){
                sankeY[0] = sankeY[0] -25;
                if (sankeY[0]<75)sankeY[0]=650;
            }
            if(fx.equals("D")){
                sankeY[0] = sankeY[0] +25;
                if(sankeY[0]>650)sankeY[0]=75;
            }
            //失败判断,撞到自己算失败
            for(int i = 1;i<length;i++){
                if (sankeX[0]==sankeX[i]&&sankeY[0]==sankeY[i]){
                    isFall = true;
                }
            }

            repaint();//重画页面
        }
        timer.start();//定时器开启!
    }
    }

构造器

//利用构造器,调用的时候就被自动被初始化,然后输入参数给形参,在加this.什么,就把参数复制给这个类中的this.什么了,避免了去监听什么键盘的事件。
public GamePanel() {
    init();
}

总结
步骤:1.定义
2.画上去
3.键盘监听
4.鼠标监听


2022/5/13

1.List集合
ArrayList 类(可变,无限大)实现了可变的数组,允许保存所有的元素,包括null,并可以根据索引位置对集合进行快速的随机访问。缺点就是向指定的索引位置插入对象或删除对象的速度较慢。
LinkedList类采用链表结构保存对象。这种结构的优点是便于向集合中插入对象或删除对象。缺点就是ArrayList的优点。
2.set集合(可以用于排序)p211.
3.Java IO 也称为IO流,IO = 流,它的核心就是对文件的操作,对于 字节 、字符类型的输入和输出流。

2022/5/14(网络编程开始!)

一.怎么连接别人的电脑(IP地址还有端口)

在这里插入图片描述
2022/5/15
TCP和UDP
在这里插入图片描述
2022/5/16
TCP步骤
在这里插入图片描述
服务器与客端的文件传送
客户端

  1. 建立Socket联系
  2. 创建一个输出流
  3. 读取文件
  4. 写出文件(在缓冲区中作为输出流写出)
  5. 关闭连接

服务器

  1. 创建一个Socket的服务器
  2. 监听客户端的连接
  3. 获取输入流
  4. 文件输出(在缓冲区中,作为输入流被写出)
  5. 关闭连接

2022/5/17

1.UDP的认识
2.多线程的初步了解
3.URL
在这里插入图片描述
2022/5/18
多线程
多线程
2022/5/19
1.run()和start()的区别
最好不要调用run()
在这里插入图片描述

//创建线程的方式一:继承Thread类,重写run()方法,调用start开启线程
//总结:注意,线程开启不一定立即执行,由CPU调度执行
public class TestThread1 extends Thread{
    @Override
    public void run() {
        //run方法线程体
        for (int i = 0; i < 200; i++) {
            System.out.println("我在看代码---"+i);

        }
    }

    public static void main(String[] args) {
          //main线程,主线程

        //创建一个线程对象
        TestThread1 testThread1 = new TestThread1();
        //调用start()方法开启线程
        testThread1.start();
        for (int i = 0; i < 1000; i++) {
            System.out.println("我在学习多线程--"+i);
        }
    }
}

在这里插入图片描述
2.多个线程操作一个对象,可能会出现线程不安全,资源紊乱的情况。
3.静态的代理
Java之静态代理
2022/5/20
一.对象的类型
1.外部类
2.静态内部类(放在同一个类下面)
3.局部内部类(放在同一个方法里面)
4.匿名内部类(匿名就是没有名字,需要接口和父类实现 ,new的时候都值new接口或者父类就好了)
Java内部类和匿名内部类的用法
二.Java Lambda表达式
在这里插入图片描述
三.线程的礼让
在这里插入图片描述
四.join合并线程
在这里插入图片描述
五.线程的优先级
在这里插入图片描述
2022/5/21
一.线程同步
在这里插入图片描述
二.同步方法
锁的对象是变化的量,需要增删改的对象
在这里插入图片描述
三.Lock锁

在这里插入图片描述
2022/5/22
一. 注解和反射在这里插入图片描述
一个类被加载了,就只有一个Class(镜子)。
二.Java集合、泛型和枚举
2022/5/23
1.Java的内存分析在这里插入图片描述
2.类的加载

在这里插入图片描述
Javase 结束!!
晴天学长的知识点回顾篇!!
1.JAVA知识复盘001——面向对象?面向过程?面向对象的三大特点和五大基本原则是什么?

2.JAVA知识复盘002——构造方法能不能被重载,构造方法能不能被重写?
概述:构造方法存在于类中,给对象数据(属性)初始化;

特点:方法名与类名一样;无返回值无void;
3.子类在继承父类之后,创建子类对象的同时也会调用父类的构造方法
4.[Java中Scanner.useDelimiter( )方法使用] 分割符
相当于割肉,要的是前面割下来的那部分
5.Java Scanner类的常用方法及用法(很详细)
6.Java中Final修饰对象
(总结:final修饰的对象,内容可变,引用不可变。)
7.java多线程中sleep和wait的4个区别,你知道几个?
8.Java中构造方法与对象
9.抽象类、最终类(final修饰的类)和接口

  1. 抽象类不能够被实例化。
  2. 抽象类的子类需要实现父类中的所有的抽象方法,否则该子类也需声明为抽象类。
  3. 接口不可以实现接口。
  4. 接口与接口之间的关系为继承,既可以单继承,也可以多继承。
interface E extends A,B,C{
	
}
  1. 最终类不能被继承;最终方法不能被重写。

10.JAVA中private用法(用来封装)只可以被类本身访问和调用
要访问private成员变量,就是定义一对儿Getter/Setter方法。
11.[JAVA:List集合]
12.Java list集合转换Map集合(哈希表).
2022/5/25
1.关键字super的作用是()。
用来访问父类被隐藏的非私有成员变量
用来调用父类中被重写的方法
用来调用父类的构造函数
2.ArrayListVector实现了 Collection 接口。
3.java中foreach的用法(只用作打印遍历器吧,因为它没有用到数组下标)。
4.Java Iterator 详解(用于遍历数组)
5.Java集合——Set详解(Set是一个继承于Collection的接口,它是一个不允许重复元素的集合,实现类主要是HashSet、LinkedHashSet、TreeSet,而且都非线程安全
6.Java 中什么叫线程安全,什么叫非线程安全?
线程安全就是在多线程下调用,不做任何同步处理,可以得到正确、可预期的结果。
非线程安全就是如果不同步,结果可能是错的,甚至程序发生死锁。
2022/5/26
1.Java中关于接口的定义以及接口的语法
2.Java抽象类与接口
(抽象类可以有普通方法,但是抽象方法没有代码体)
3.Java抽象类 (怎么定义和使用)
4.Java中try-catch-finally用法
5.在java中==和equals()的区别
6.Float a = 1.0F;(定义float型变量时,如果不加F和f,系统会认为是double类型数据,进而出错。)
7.Java中length、length()、size()区别(size()是针对集合的)
8.深入理解String、StringBuffer和StringBuilder
9.for循环可以没有条件
10.Java内部类详细介绍
2022/5/27
1.java中^怎么用运算符在Java中做什么?
2.java中的Set集合
3.Java中flush()的使用
4.Java封装
5.Java封装/getter和setter(就是设置两个方法,一个用值传递把参数传进来用this去修改本类的值,一个return 返回那个私有属性)
6.Java中的向上转型和向下转型。
2022/5/28
1.源程序文件的扩展名是.java
一个源程序文件只能有一个public类,而且类名必须是文件名!!
一个源程序文件中可以有多个类
源程序文件名只能与其代码中的唯一一个public的类名相同
2.集合中那些是线程安全,那些不安全
Vector、HashTable、Properties是线程安全的;

ArrayList、LinkedList、HashSet、TreeSet、HashMap、TreeMap等都是线程不安全的。
值得注意的是:为了保证集合是线程安全的,相应的效率也比较低;线程不安全的集合效率相对会高一些。
3.Java中的修饰符
4.Java中的标识符
5.Java InputStream 知识
6.java线程的状态有几种
7.Java多线程学习(吐血超详细总结)(不管是继承Thread还是实现Runable接口,其实际还是运行Thread的start()方法来运行的)
2022/5/29
1.全局变量/属性可以加修饰符
局部变量不可以加修饰符
2022/5/30
1.在Java中,条件执行语句中,没有0和1,只有true和false。
2022/6/1
1.Java 中的每一个枚举都继承自 java.lang.Enum 类。当定义一个枚举类型时,每一个枚举类型成员都可以看作是 Enum 类的实例,这些枚举成员默认都被 final、public, static 修饰,当使用枚举类型成员时,直接使用枚举名称调用成员即可。
2.抽象类
3.在 swtich - case 语句中 进去后,按顺序执行知最后或者遇到break,即使遇到default也是一样的还是会执行。
4.& gt; 和 & lt; 代表大于号> 和小于号<
5.下面哪些类实现或继承了 Collection 接口()。
B、ArrayList(正确)
C、Vector(正确)
6.String与StringBuffer的区别()。
A、String是不可变的对象,StringBuffer是可以再编辑的(正确)
B、字符串是常量,StringBuffer是变量(正确)
7.java replace和replaceAll

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

晴天学长

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值