案例斗地主
无序发牌][就是在有序发牌的基础上桥接了一个编号]通过这个编号可以洗牌 取牌
比较懒 牌的内容是 笛卡尔交集 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