正则表达and线程

第一天的作业

定义一个方法,实现给一个数组中添加元素(数组复制)
描述:定义一个方法,向一个整型数组中添加元素
定义一个方法的思路

  • 1.确定方法的返回值类型:功能参与的运算是否有结果,结果的类型是返回值的类型
  • 2.确定法人参数列表:功能是否有不确定的数据参与运算
  • 3.动态的方法参数,必须是方法的最后一个参数,方法中以数组的方式处理动态数组

/
//数组复制
/

* 参数
* src原数组
* 原数组的起始位
* dest目标数组
* 目标数组的起始位
* 复制数组元素的数量
*/System.arraycopy(src, 0, dest, 0, src.length);

package cn.tedu.javabace;

import java.util.Arrays;

/**
 *@author 作者: huzhengjie
 *@version 时间:2021年7月13日  上午8:57:29
 *@desc 描述:
 **/
/*//描述:定义一个方法,向一个整型数组中添加元素
 * 定义一个方法的思路
 * 1.确定方法的返回值类型:功能参与的运算是否有结果,结果的类型是返回值的类型
 * 2.确定法人参数列表:功能是否有不确定的数据参与运算
 * 动态的方法参数,必须是方法的最后一个参数,方法中以数组的方式处理动态数组
 * 
 */
public class Test2 {
	public int[] addElement(int[] src,int...elements) {//addElement(要复制的数组,要添加的元素)
		int[] dest=new int[src.length+elements.length];
		//数组复制
		/*
		 * 参数
		 * src原数组
		 * 原数组的起始位
		 * 目标数组
		 * 目标数组的起始位
		 * 复制数组元素的数量
		 */
		System.arraycopy(src, 0, dest, 0, src.length);
		System.arraycopy(elements, 0,dest, src.length, elements.length);
		return dest;
	}
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Test2 test=new Test2();
		int[] src= {1,2,3};
		int[] dest=test.addElement(src,4,5,6,7);
		System.out.println(Arrays.toString(dest));
	}

}


面向对象

什么是面向对象,什么是面向过程?
OOP

  • 类、对象、类定义、对象的创建、对象的使用

  • 成员变量、方法、方法重载、构造方法、this关键字

  • 继承、方法重写

  • 多态、父亲类的引用指向子类的对象

  • 动态你绑定:多态+重写

  • 封装、访问修饰符:4种
    public、protected、default、private
    static 静态的 类变量和实例变量

  • 静态代码块
    static{
    代码;

    }
    final
    abstract

  • 接口

  • 内部类

javaweb

  • 工具:IDEA
  • 技术:
  • 语言:java
  • 数据库:MYSQL
  • 知识:java语法、API
  • HTML+CSS+JS
  • maven搭建项目
  • 框架:SSM /springboot
  • spring/springmvc/mybatis
  • jquery/ajax
  • cookie/session
  • jsp/serlect/tomcat
    云服务器——阿里云等——linux

课堂练习

身份证号码:350 427 2xxx xx xx xxxx
前六位是地址码
中间八位数字为出生日期
接下来三位是顺序码
最后一位是校验码
第十七位男奇女偶

package cn.tedu.javabace;
/**
 *@author 作者: huzhengjie
 *@version 时间:2021年7月13日  上午10:00:35
 *@desc 描述:
 **/
public class Demo01 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		String card="350427200xxxxxxxx2";
		//1、截取出区域编码
		String str1=card.substring(0,6);
		System.out.println(str1);
		//2、截取出生年月
		String str2=card.substring(6,14);
		//3、输出格式:XXXX年xx月xx日
		int year;int month;int day;
		year=Integer.parseInt(str2.substring(0,4));
		month=Integer.parseInt(str2.substring(4,6));
		day=Integer.parseInt(str2.substring(6,8));
		System.out.println(year+"年"+month+"月"+day+"日");
		//4、截取倒数第二位,判断一下男奇女偶
		String str3=card.substring(card.length()-2, card.length()-1);

		System.out.println("倒数第二位"+str3);
		if(Integer.parseInt(str3)%2==0)
			System.out.println("sex:女");
		else
			System.out.println("sex:男");


	}

}

正则表达

通过例子引入

  • 例①
package cn.tedu.javabace;
/**
*@author 作者: huzhengjie
*@version 时间:2021年7月13日  上午11:02:35
*@desc 描述:
**/
public class Demo02 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
String str="1234";
//任意四位数
String regex="[0123456789][0123456789][0123456789][0123456789]";
System.out.println(str.matches(regex));
 regex="[0-9][0-9][0-9][0-9]";
 System.out.println(str.matches(regex));
 regex="[0-9]{4}";
 System.out.println(str.matches(regex));
 //8-16位数字
 str="12345678901";
 regex="[0-9]{8,16}";
 System.out.println(str.matches(regex));
 //转义字符\d就是转义为数字
 regex="\\d{8,16}";
 System.out.println(str.matches(regex));
// 以^开头以$结尾
 regex="^\\d{8,16}$";
 System.out.println(str.matches(regex));
 // \D转义为非数字
 str="abcd;;;;;";
 regex="^\\D{8,16}$";
 System.out.println(str.matches(regex));
	}

}

  • 例②
package cn.tedu.javabace;
/**
*@author 作者: huzhengjie
*@version 时间:2021年7月13日  上午11:15:54
*@desc 描述:
**/
public class Demo03 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
//最少的五位字母
		String str="abcdQ";
		String regex="^[a-zA-Z]{5,}$";
		 System.out.println(str.matches(regex));
		 //通配符 * ? +
		 //一位1-9的数字和一位a-z的组合,组合可以出现任意次
		 str="1q2r2y2g3e";
		 regex="[1-9a-z]*";
		 System.out.println(str.matches(regex));
		 str="19154084965";
		 regex="[1][3-9][0-9]{9}";//手机号正则表达
		 System.out.println("手机号"+str.matches(regex));
		 regex="^[1][3-9]\\d{9}$";
		 System.out.println("手机号"+str.matches(regex));
		 str="1234567@163.com";
		 regex="(\\w\\.)*\\w+@(\\w+\\.)+[A-Za-z]+";
		 System.out.println("邮箱"+str.matches(regex));	 
		 regex="^\\w+([-+.]\\w+)*\\@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$";//邮箱正则
		 System.out.println("邮箱"+str.matches(regex));
		 str="350427200104203012";
		 regex="^\\d{6}(19\\d{2}|(20[01]\\d|202[01]))(0\\d|1[012])(0\\d|[12]\\d|3[01])[0-9]{4}$";
		 System.out.println("身份证"+str.matches(regex));
	}

}

多线程

  • 例1
package cn.tedu.javabace;
/**
 *@author 作者: huzhengjie
 *@version 时间:2021年7月13日  下午2:19:06
 *@desc 描述:线程模拟售票
 **/
public class Demo04 extends Thread{//线程
	private int ticket=10;
	public void run() {
		super.run();
		while(true) {
			if(ticket<=0) {
				break;
			}
			System.out.println("线程:"+Thread.currentThread().getName()+"剩余的票"+ticket--);
		}
	}

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		//创建线程---三个售票窗口
		Demo04 obj1=new Demo04();
		Demo04 obj2=new Demo04();	
		Demo04 obj3=new Demo04();
		Thread thread1=new Thread(obj1,"窗口1");
		Thread thread2=new Thread(obj2,"窗口2");
		Thread thread3=new Thread(obj3,"窗口3");
		thread1.start();
		thread2.start();
		thread3.start();
	}

}

  • 例2
package cn.tedu.javabace;



/**
*@author 作者: huzhengjie
*@version 时间:2021年7月13日  下午2:40:49
*@desc 描述:线程实现方法2-----实现Runnable接口
**/
public class Demo05 implements Runnable{
	private int ticket=10;
	@Override
	public void run() {
		while(true) {
			if(ticket<=0)
			{
			break;
			}
		
		try {
			Thread.sleep(100);
		} catch (InterruptedException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}
		// TODO 自动生成的方法存根
		System.out.println("线程:"+Thread.currentThread().getName()+"剩余的票"+ticket--);
		}
	}
	
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Demo05 obj=new Demo05();		
		Thread t1=new Thread(obj,"窗口1");
		Thread t2=new Thread(obj,"窗口2");
		Thread t3=new Thread(obj,"窗口3");
		t1.start();
		t2.start();
		t3.start();
	}

}

  • ** 例3**
package cn.tedu.javabace;
/**
 *@author 作者: huzhengjie
 *@version 时间:2021年7月13日  下午3:11:40
 *@desc 描述:
 **/
public class Demo06 extends Thread{
	private int ticket=20;
	@Override
	public void run() {
		while(true) {
			synchronized (this) {//对象锁
				if(ticket<=0)
				{
					break;
				}

				try {
					Thread.sleep(100);
				} catch (InterruptedException e) {

					e.printStackTrace();
				}

				System.out.println("线程:"+Thread.currentThread().getName()+"剩余的票"+ticket--);
			}	
		}

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

		Demo06 obj=new Demo06();
		for(int i=0;i<3;i++)
		{
			new Thread(obj).start();
		}
	}

}

优化满天星(Day1的内容)

给满天星添加弹幕等功能

package cu.tedu.pro;



import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.util.Random;

import javax.swing.JPanel;
public class MyJPane1 extends JPanel implements Runnable{
	/**
	 * 
	 */
	private static final long serialVersionUID = 7899458656776310624L;
	//定义五十个星星的坐标
	int[] x=new int[100];
	int[] y=new int[100];
	//弹幕效果
	String[] sx = {"hi","牛","哈哈哈"};
	int[] xx=new int[3];
	int[] yy=new int[3];
	//全局变量
	int x1=360;
	int x2=1600;
	int y2=80;
	//构造方法
	public  MyJPane1()
	{
		Random rand=new Random();//随机数
		for (int i=0;i<x.length;i++){
			x[i]=rand.nextInt(1600);
			y[i]=rand.nextInt(999);
		}
		for(int i=0;i<sx.length;i++) {
			xx[i]=rand.nextInt(1600);
			yy[i]=(int)rand.nextInt(900);
		}

		//启动线程
		new Thread(this).start();
	}
	public void paint (Graphics g) {
		super.paint(g);
		//修改畫布背景
		this.setBackground(Color.BLACK);//修改背景
		//0-255	
		g.setColor(Color.white);
		Font font1=new Font("微软雅黑",Font.BOLD,50);
		g.setFont(font1);
		g.drawString("製作人:hu",x2,y2);

		for(int i=0;i<sx.length;i++)
		{ 
			g.setColor(Color.white);
			Font font2=new Font("微软雅黑",Font.BOLD,50);
			g.setFont(font2);
			g.drawString(sx[i],xx[i],yy[i]);
		}

		g.setColor(Color.YELLOW);
		g.fillOval(100, 100, 200, 200);
		g.setColor(Color.BLACK);
		g.fillOval(x1, 120,260,260);
		for(int i = 0;i<x.length;i++) {
			int red =(int)(Math.random()*256);
			int green=(int)(Math.random()*256);
			int blue =(int)(Math.random()*256);
			//g.setColor(Color.BLACK);//字体颜色
			Color color=new Color(red,green,blue);
			g.setColor(color);
			Font font=new Font("微软雅黑",Font.BOLD,50);
			g.setFont(font);

			g.drawString("*",x[i],y[i]);
		}

	}
	@Override
	public void run() {
	
		while(true) {
			
			x2-=10;
		
			x1-=10;
		
			if(x2<=0)
				x2=1600;
		
			for(int i=0;i<sx.length;i++)
			{
				xx[i]-=10;
				if(xx[i]<=0)
					xx[i]=1600;
			}
			if(x1<=0)
				x1=500;
			try {
				Thread.sleep(100);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			repaint();//重绘 重复调用 paint
		}
	}
}

//优化一下 退出窗体时,关闭进程
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

package cu.tedu.pro;

import javax.swing.*;


/*
* 窗体类:JFrame
*
* */

public class MyJFrame extends JFrame {

    /**
	 * 
	 */
	private static final long serialVersionUID = 5755736781177874722L;
	

	//构造方法  方法名与类名相同,没有任何返回值类型
    //作用:初始化
    public MyJFrame(){
        //this :指代当前对象
        this.setTitle("漫天星");
        //窗体宽和高
        this.setSize(1600,999);
        //显示可见
        this.setVisible(true);
        //显示居中
        this.setLocationRelativeTo(null);
        //优化 退出窗体时,关闭进程
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //创建画布对象
        MyJPane1 mj = new MyJPane1();
        this.add(mj);
    }

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

    }

}


   


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值