唐宋元明清 唐宋元明清
首页
  • 基础

    • Java基础
  • 工具

    • hutool
    • commons
  • 框架

    • Spring Boot相关
  • 设计模式

    • 设计模式入门
  • Hadoop

    • Hadoop分布式搭建
    • Hadoop高可用搭建
    • 集群端口
    • 代码demo
  • Zookeeper

    • Zookeeper集群搭建
  • Hive

    • Hive集群搭建
    • Hive相关
    • HSQL
  • Kafka

    • Kafka集群搭建
  • HBase

    • HBase集群搭建
    • HBase基础学习
  • Spark

    • Spark环境搭建
    • Spark相关知识
  • Flink

    • Flink环境搭建
    • Flink学习
  • Flume

    • Flume安装配置
    • Flume高可用集群安装
    • Flume相关学习
  • Sqoop

    • Sqoop安装配置
    • Sqoop使用
  • 其他

    • docker
  • Oracle

    • Oracle相关知识杂记
    • 系统函数篇
    • 与MySQL语法区别
  • MySQL

    • MySQL知识点
  • Python

    • Python简单语法
    • Python操作Office
    • Python类库学习
    • Python爬虫
  • Shell

    • Shell基础
    • Shell命令行
  • Scala

    • 语法学习
  • 正则表达式

    • 正则基础
  • 调度

    • 调度工具
  • 前端

    • 前端相关
  • 杂记

    • 常用工具或网站
    • 琐碎知识
  • 摘录

    • 摘录
GitHub (opens new window)
首页
  • 基础

    • Java基础
  • 工具

    • hutool
    • commons
  • 框架

    • Spring Boot相关
  • 设计模式

    • 设计模式入门
  • Hadoop

    • Hadoop分布式搭建
    • Hadoop高可用搭建
    • 集群端口
    • 代码demo
  • Zookeeper

    • Zookeeper集群搭建
  • Hive

    • Hive集群搭建
    • Hive相关
    • HSQL
  • Kafka

    • Kafka集群搭建
  • HBase

    • HBase集群搭建
    • HBase基础学习
  • Spark

    • Spark环境搭建
    • Spark相关知识
  • Flink

    • Flink环境搭建
    • Flink学习
  • Flume

    • Flume安装配置
    • Flume高可用集群安装
    • Flume相关学习
  • Sqoop

    • Sqoop安装配置
    • Sqoop使用
  • 其他

    • docker
  • Oracle

    • Oracle相关知识杂记
    • 系统函数篇
    • 与MySQL语法区别
  • MySQL

    • MySQL知识点
  • Python

    • Python简单语法
    • Python操作Office
    • Python类库学习
    • Python爬虫
  • Shell

    • Shell基础
    • Shell命令行
  • Scala

    • 语法学习
  • 正则表达式

    • 正则基础
  • 调度

    • 调度工具
  • 前端

    • 前端相关
  • 杂记

    • 常用工具或网站
    • 琐碎知识
  • 摘录

    • 摘录
GitHub (opens new window)
  • Java相关知识
  • 基础

    • Java基础
    • Java扩展
    • 工具

      • hutool工具包
      • Commons类库
      • SQL解析工具
    • 框架

      • Spring Boot相关
    • 设计模式

      • 设计模式入门
      • 策略模式
      • 观察者模式
      • 装饰者模式
      • 工厂模式
      • 单例模式
      • 命令模式
      • 适配器模式与外观模式
      • 模板方法模式
      • 迭代器与组合模式
      • State 模式
      • 代理模式
    • Java相关
    • 基础
    Ai
    2022-04-15
    目录

    Java扩展

    # 基础

    # Java Docs

    # Java 文档注释

    Java 支持三种注释方式。前两种分别是 // 和 /* /,第三种被称作说明注释,它以 /* 开始,以 */结束。

    说明注释允许你在程序中嵌入关于程序的信息。你可以使用 javadoc 工具软件来生成信息,并输出到HTML文件中。

    说明注释,使你更加方便的记录你的程序信息。

    javadoc 标签

    标签 描述 示例
    @author 标识一个类的作者 @author description
    @deprecated 指名一个过期的类或成员 @deprecated description
    {@docRoot} 指明当前文档根目录的路径 Directory Path
    @exception 标志一个类抛出的异常 @exception exception-name explanation
    {@inheritDoc} 从直接父类继承的注释 Inherits a comment from the immediate surperclass.
    {@link} 插入一个到另一个主题的链接 {@link name text}
    {@linkplain} 插入一个到另一个主题的链接,但是该链接显示纯文本字体 Inserts an in-line link to another topic.
    @param 说明一个方法的参数 @param parameter-name explanation
    @return 说明返回值类型 @return explanation
    @see 指定一个到另一个主题的链接 @see anchor
    @serial 说明一个序列化属性 @serial description
    @serialData 说明通过writeObject( ) 和 writeExternal( )方法写的数据 @serialData description
    @serialField 说明一个ObjectStreamField组件 @serialField name type description
    @since 标记当引入一个特定的变化时 @since release
    @throws 和 @exception标签一样. The @throws tag has the same meaning as the @exception tag.
    {@value} 显示常量的值,该常量必须是static属性。 Displays the value of a constant, which must be a static field.
    @version 指定类的版本 @version info
    # idea生成项目帮助文档

    可以帮助理解源码

    • 打开项目 ->
    • Tools ->
    • Generate JavaDoc ->
    • 在Output directory选择文档输出目录 ->
    • 设置Locale:zh_CN ->
    • 设置Other command line arguments:-encoding UTF-8 -charset UTF-8 ->
    • OK

    # idea Debugger使用

    博客链接 (opens new window)

    # 数据类型知识点

    # Java中valueOf与parseInt方法比较
    • 从返回类型可以看出parseInt返回的是基本类型int,而valueOf返回的是对象Integer(new Integer(Integer.parseInt(s)))。原文地址 (opens new window)
    # HashMap

    HashMap详解 (opens new window)

    原文地址 (opens new window)

    # 小游戏2048

    点击查看

    以下为代码

    import javax.swing.*;
    import java.awt.*;
    public class Block extends JLabel 
    {
      private int value;
      public Block() 
      {
        value = 0;//初始化值为0
        setFont(new Font("font", Font.PLAIN, 40));//设定字体
        setBackground(Color.gray);//设定初始颜色为灰色
      }
     
      public int getValue()//获取值
      {
        return value;
      }
     
      public void setValue(int value)
      {
        this.value = value;
        String text = String.valueOf(value);
        if (value != 0)
          setText(text);
        else
          setText("");//如果值为0则不显示
        setColor();
      }
     
      public void setColor() //根据值的不同设定不同的背景颜色、label字体
      {
        switch (value) 
          {
        case 0:
          setBackground(Color.gray);
          break;
        case 2:
          setBackground(new Color(238, 228, 218));
          break;
        case 4:
          setBackground(new Color(238, 224, 198));
          break;
        case 8:
          setBackground(new Color(243, 177, 116));
          break;
        case 16:
          setBackground(new Color(243, 177, 116));
          break;
        case 32:
          setBackground(new Color(248, 149, 90));
          break;
        case 64:
          setBackground(new Color(249, 94, 50));
          break;
        case 128:
          setBackground(new Color(239, 207, 108));
          break;
        case 256:
          setBackground(new Color(239, 207, 99));
          break;
        case 512:
          setBackground(new Color(239, 203, 82));
          break;
        case 1024:
          setBackground(new Color(239, 199, 57));
          break;
        case 2048:
          setBackground(new Color(239, 195, 41));
          break;
        case 4096:
          setBackground(new Color(255, 60, 57));
          break;
          }
      }
    }
    
    import java.awt.*;
    import javax.swing.*;
    public class My2048 extends JFrame 
    { 
      public My2048()//构造函数 
      {
        setTitle("2048");//设置标题
        setSize(400, 400);//设定窗口大小
        setLocation(500, 200);//设定窗口起始位置
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        getContentPane().setLayout(new GridLayout(4, 4, 5, 5));//设定布局方式为GridLayout型
        new Operation(this);
        this.setVisible(true);//设为可视
      }
     
      public static void main(String args]) //程序入口点
      {
        try
        {
          UIManager.setLookAndFeel("org.jvnet.substance.skin.SubstanceRavenGraphiteLookAndFeel");//设定UI
        } //接受抛出的异常
        catch (ClassNotFoundException | InstantiationException| IllegalAccessException | UnsupportedLookAndFeelException e)
        {
          e.printStackTrace();
        }
        JFrame.setDefaultLookAndFeelDecorated(true);//设定Frame的缺省外观
        new My2048();
      }
     
    }
    
    import java.awt.event.*;
    import javax.swing.*;
    public class Operation implements KeyListener
    {
      Block] block;//用于储存16个数据
      JPanel panel;
      public boolean up,down,left,right;
      int moveFlag;//用于累计移动的次数
      boolean numFlag;//用于判断是否还能加入新的数字
      public Operation(JFrame frame) 
      {
        this.panel = (JPanel)frame.getContentPane();//构造出panel
        block = new Block16];//构造出长度为16的数组
        numFlag = true;//初始化
        moveFlag = 0;
        up=true;down=true;left=true;right=true;
        addBlock();
        for (int i = 0; i < 2; i++)
          appearBlock();
        frame.addKeyListener(this);
      }
     
      private void addBlock() 
      {
        for (int i = 0; i < 16; i++) //往panel里加入block
        {
          blocki] = new Block();
          blocki].setHorizontalAlignment(JLabel.CENTER);// 不透明的标签
          blocki].setOpaque(true);
          panel.add(blocki]);  
        }
      } 
      public void appearBlock() 
      {
        while (numFlag) //当还能加入随机的一个新的值得时候
        {
          int index = (int) (Math.random() * 16);//取一个0到15的随机整数,这个数作为随机加入盘中的2或4的位置
          if (blockindex].getValue() == 0)//如果这个数所在的block数组中值为0,即在为空的时候,加入一个2或4的数字
          {
            if (Math.random() < 0.5)
            {
              blockindex].setValue(2);
            }
            else
            {
              blockindex].setValue(4);
            }
            break;//跳出while
          }
        }
      }
     
      public void judgeAppear() //统计block数组中是否含有值为0的元素,若没有,则numFlag变为false
      {
        int sum = 0;
        for (int i = 0; i < 16; i++) 
        {
          if (blocki].getValue() != 0)
          {
            sum++;
          }
        }
        if (sum == 16)
          numFlag = false;
     
      }
     
      public int Find(int i,int j,int a,int b)
      {
        while(i<b&&i>=a)
        {
           if(blocki].getValue()!=0)
           {
            return i;
           }
           i=i+j;
        }
        return -1;
      }
      public void upBlock()
      {
        int i=0,j=0;int t=0;int valueJ=0;int valueI=0;int index=0;
        for(i=0;i<4;i++)
        {
          index=i;
          for(j=i+4;j<16;j+=4)
          {  
            valueJ=0; valueI=0;
            if(blockindex].getValue()==0)
            {
              t=Find(index,4,0,16);
              if(t!=-1)
              {
                blockindex].setValue(blockt].getValue());
                blockt].setValue(0);
              }
              else
              {
                break;
              }
            }
            valueI=blockindex].getValue();
            if(blockj].getValue()==0)
            {
              t=Find(j,4,0,16);
              if(t!=-1)
              {
                blockj].setValue(blockt].getValue());
                blockt].setValue(0);
              }
              else
              {
                break;
              }
            }
            valueJ=blockj].getValue();
            if(valueI==valueJ&&valueI!=0&&valueJ!=0)
            {
              blockindex].setValue(valueI+valueJ);
              blockj].setValue(0);
              numFlag = true;
            }
            index=j;
          }
           
        }
      }
      public void downBlock() {
     
        int i=0,j=0;int t=0;int valueJ=0;int valueI=0;int index=0;
        for(i=12;i<16;i++)
        {
          index=i;
          for(j=i-4;j>=0;j-=4)
          {  
            valueJ=0; valueI=0;
            if(blockindex].getValue()==0)
            {
              t=Find(index,-4,0,16);
              if(t!=-1)
              {
                blockindex].setValue(blockt].getValue());
                blockt].setValue(0);
              }
              else
              {
                break;
              }
            }
            valueI=blockindex].getValue();
            if(blockj].getValue()==0)
            {
              t=Find(j,-4,0,16);
              if(t!=-1)
              {
                blockj].setValue(blockt].getValue());
                blockt].setValue(0);
              }
              else
              {
                break;
              }
            }
            valueJ=blockj].getValue();
            if(valueI==valueJ&&valueI!=0&&valueJ!=0)
            {
              blockindex].setValue(valueI+valueJ);
              blockj].setValue(0);
              numFlag = true;
            }
            index=j;
          }
           
        }
      }
      public void rightBlock() 
      {
        int i=0,j=0;int t=0;int valueJ=0;int valueI=0;int index=0;
        for(i=3;i<16;i+=4)
        {
          index=i;
          for(j=i-1;j>i-4;j--)
          {  
            valueJ=0; valueI=0;
            if(blockindex].getValue()==0)
            {
              t=Find(index,-1,i-3,index+1);
              if(t!=-1)
              {
                blockindex].setValue(blockt].getValue());
                blockt].setValue(0);
              }
              else
              {
                break;
              }
            }
            valueI=blockindex].getValue();
            if(blockj].getValue()==0)
            {
              t=Find(j,-1,i-3,j+1);
              if(t!=-1)
              {
                blockj].setValue(blockt].getValue());
                blockt].setValue(0);
              }
              else
              {
                break;
              }
            }
            valueJ=blockj].getValue();
            if(valueI==valueJ&&valueI!=0&&valueJ!=0)
            {
              blockindex].setValue(valueI+valueJ);
              blockj].setValue(0);
              numFlag = true;
            }
            index=j;
          }
           
        }
      }
      public void leftBlock() 
      {
        int i=0,j=0;int t=0;int valueJ=0;int valueI=0;int index=0;
        for(i=0;i<16;i+=4)
        {
          index=i;
          for(j=i+1;j<i+4;j++)
          {  
            valueJ=0; valueI=0;
            if(blockindex].getValue()==0)
            {
              t=Find(index,1,index,i+4);
              if(t!=-1)
              {
                blockindex].setValue(blockt].getValue());
                blockt].setValue(0);
              }
              else
              {
                break;
              }
            }
            valueI=blockindex].getValue();
            if(blockj].getValue()==0)
            {
              t=Find(j,1,j,i+4);
              if(t!=-1)
              {
                blockj].setValue(blockt].getValue());
                blockt].setValue(0);
              }
              else
              {
                break;
              }
            }
            valueJ=blockj].getValue();
            if(valueI==valueJ&&valueI!=0&&valueJ!=0)
            {
              blockindex].setValue(valueI+valueJ);
              blockj].setValue(0);
              numFlag = true;
            }
            index=j;
          }
           
        }
      }
      public void over() 
      {
        if (numFlag ==false&& up==false&&down==false&&left==false&&right==false) //当不能添加元素,并且不可移动的步数超过36就输了,输了的时候在盘中央显示GAMEOVER
        {
          block4].setText("G");
          block5].setText("A");
          block6].setText("M");
          block7].setText("E");
          block8].setText("O");
          block9].setText("V");
          block10].setText("E");
          block11].setText("R"); 
          block11].addMouseListener(new MouseAdapter() {public void mousePressed(MouseEvent e){reStart();}});
        }
      }
       
      public void win() //同OVER
      { 
        block0].setText("Y");
        block1].setText("O");
        block2].setText("U");
        block13].setText("W");
        block14].setText("I");
        block15].setText("N");
        block15].addMouseListener(new MouseAdapter() {
          public void mousePressed(MouseEvent e) {
            reStart();
          }
        });
      }
      public void reStart()//重启游戏,和构造函数类似,不在累述
      {
        numFlag=true;
        moveFlag=0;
        up=true;down=true;left=true;right=true;
        for(int i=0;i<16;i++)
          blocki].setValue(0);
        for (int i = 0; i < 2; i++)
          appearBlock();
      }
      public void keyPressed(KeyEvent e) //判断按的上下左右键,并依次调用移动函数、判断函数、添加函数、判断是否输掉的函数
      {
        switch (e.getKeyCode()) {
        case KeyEvent.VK_UP:
          if(up){
          upBlock();}
          judgeAppear();
          appearBlock();
          over();
           
          if(numFlag==false)
          {
            up=false;
          }
          else
          {
            up=true;down=true;left=true;right=true;
          }
          break;
        case KeyEvent.VK_DOWN:
          if(down){
          downBlock();}
          judgeAppear();
          appearBlock();
          over();
          if(numFlag==false)
          {
            down=false;
          }
          else
          {
            up=true;down=true;left=true;right=true;
          }
          break;
        case KeyEvent.VK_LEFT:
          if(left){
          leftBlock();}
          judgeAppear();
          appearBlock();
          over();
           
          if(numFlag==false)
          {
            left=false;
          }
          else
          {
            up=true;down=true;left=true;right=true;
          }
          break;
        case KeyEvent.VK_RIGHT:
          if(right){
          rightBlock();}
          judgeAppear();
          appearBlock();
          over();
           
          if(numFlag==false)
          {
            right=false;
          }
          else
          {
            up=true;down=true;left=true;right=true;
          }
          break;
        }
     
      }
      public void keyTyped(KeyEvent e) {
     
      }
      public void keyReleased(KeyEvent e) {
     
      }
     
    }
    
    编辑 (opens new window)
    上次更新: 2022/07/03, 15:32:16
    Java基础
    hutool工具包

    ← Java基础 hutool工具包→

    Theme by Vdoing | Copyright © 2022-2025 Ai | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式
    ×