案例斗地主

无序发牌][就是在有序发牌的基础上桥接了一个编号]通过这个编号可以洗牌 取牌

比较懒 牌的内容是 笛卡尔交集   map集合存K V 俩个有序集合可以洗牌 通过get(K)取排  一个发牌一个存序

我认为有序加map就够了 无序那就随便一个集合就行了 发完三个玩家集合 和 一个底牌集合就行了 

 jvm虚拟机 跨平台运行字节码文件  jre 支撑java运行环境的核心类库 运行java程序  jdk 开发java环境工具包 

俩处交替 位运算 和声明临时变量

a,b   c   c=a,a=b,b=c;     a^=b,b^=a,a^=b;

关于后++都是一元运算存储到了临时空间 再次调取该变量时获取自身变量值

俩种情况的的返回值可以用三元运算 三种情况就再嵌套一个三元  

案例输入日期 获取今天是第几天  用无break的switch倒叙叠加天数  正序有break就要在外面套加一个循环迭代

案例面向对象都是写好的流程剧本调用方法 运算变量 存储操作

数组反转 ?转成集合引用集合工具 自己写!正序倒叙都可以 俩个更迭变量ab 正序a<b  倒序a>b 不然数组元素不变

int[] arrs = { 4, 2, 3, 6, 7, 8, 9, 5};
for (int i = 0,j=arrs.length-1; i <arrs.length ; i++,j--) {//定义循环变量
    if(i<j){
        arrs[i]^=arrs[j];
        arrs[j]^=arrs[i];
        arrs[i]^=arrs[j];
    }
}
System.out.println(Arrays.toString(arrs));

int和char想通直接兼容 byte可以转换char和String类转 StringBuilder和String都有contains indexOf但是String replace比较好用

字符串另有endswith以“ ”结尾的方法

 获取指定字符个数方法 除了集中遍历外还可以分割

public class demo4 {
    public static void main(String[] args) throws IOException {
       String s="qnnnqqnq";
        String[] s1 = s.split("q");
        if(s.endsWith("q")) System.out.println(s1.length);else
        System.out.println(s1.length-1);
    }
}

获取不同随机数的俩种方法 整体替换和局部替换 整体替换检查到随机数就重新生成一个数组态沙雕 效率低不介意也不在这写了 

抽取不同俩组不同的元素

public class demo4 {
    public static void main(String[] args) throws IOException {

        int[] list = new int[8];
//外层一内存八次 外层控制元素 内存控制个数 外层循环每次产生一个随机数
        for (int i = 0; i < 8; i++) {
            boolean flag = true;
            int rad = (int) (Math.random() * 10 + 1);//公式 b-a+1 10-1+1=10  10+1
            for (int i1 = 0; i1 < 8; i1++) {
                if (rad == list[i1]) {
                    i--;//一样你就别想往里加 原地踏步吧
                    flag = false;
                }
            }
            if (flag) list[i] = rad;
        }
        System.out.println(Arrays.toString(list));
        int[] arrs = { 4, 2, 3, 6, 7, 8, 9, 5};
        System.out.println(Arrays.toString(arrs));
        StringBuilder stringBuilder = method(list, arrs);
        System.out.println(stringBuilder);
    }

    public static StringBuilder method(int[] aarr, int[] barr) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0,z=0; i < aarr.length; i++ ,z++) {
            boolean flaga = false;//立个flag 重复元素剔除
            boolean flagb = false;//立个flag 重复元素剔除
            for (int j=0; j < barr.length; j++) {
                if (aarr[i] == barr[j]){ flaga=true; break;}else flaga=false;
            }
            if (!flaga) sb.append(aarr[i]+" ");
            for (int j=0; j < barr.length; j++) {
                if (barr[z] == aarr[j]){ flaga=true; break;}else flaga=false;
            }
            if (!flaga) sb.append(barr[z]+" ");
        }
        return sb;
    }


}其实这些东西转点脑子每个人都会 个人认为这是知识信息爆炸时代 应该把精力学在必须必会的要素和规范上

封装  继承 多态 【接口属于多继承】

斐波那契序列 1 1 2  3 5

方法一 定义俩数组 第三数组是前两个数组之和

方法二使用变量俩处交换 int a=1 int b=1 ;  int temp=a  a=b  b=a+temp;

构造方法的隐式三步 继承父类构造 初始化非静态  构造代码块

ASCII 0-9 48-57 A-Z 65-90  a-z 97-122