第一天的作业
定义一个方法,实现给一个数组中添加元素(数组复制)
描述:定义一个方法,向一个整型数组中添加元素
定义一个方法的思路
- 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();
}
}