-
gaishu
查看全部 -
s.charAt(i) 第i位
查看全部 -
那么,“==” 和 equals() 有什么区别呢?
==: 判断两个字符串在内存中首地址是否相同,即判断是否是同一个字符串对象
equals(): 比较存储在两个字符串对象中的内容是否一致
PS:字节是计算机存储信息的基本单位,1 个字节等于 8 位, gbk 编码中 1 个汉字字符存储需要 2 个字节,1 个英文字符存储需要 1 个字节。所以我们看到上面的程序运行结果中,每个汉字对应两个字节值,如“学”对应 “-47 -89” ,而英文字母 “J” 对应 “74” 。同时,我们还发现汉字对应的字节值为负数,原因在于每个字节是 8 位,最大值不能超过 127,而汉字转换为字节后超过 127,如果超过就会溢出,以负数的形式显示。(关于编码,我们在后面课程中会详细介绍,小小期待哦~~)
查看全部 -
基本类型与字符串之间的转换:
一基本类型转字符串
1使用toString()方法
2使用String类的valueOf()方法
3用一个空字符串加上基本类型
二字符串转基本类型:
1调用包装类的parseXxx静态方法
2调用包装类的valueOf()方法转换为基本类型的包装类,会自动拆箱
查看全部 -
基本类型与包装类之间的转换
1装箱(基本类型转换为包装类)
例子:int i = 10;
Integer x = new Integer(i); 手动装
Integer y = i; 自动装
2拆箱(包装类型转换为基本类型)
例子:Integer j = new Integer(8);
int m = j.intValue(); 手动拆
int n = j; 自动拆
查看全部 -
包装类的应用
1基本数据类型的转换
实例:1double: doubleValue()类似的有byte,float,int,long
2static int : parseInt(String s) 将字符串转化为int类型
3String:toSting() 转为字符串类型
4static Integer: valueOf(String s) 将字符串转为Integer类型
查看全部 -
交作业啦,可能写的不太好,还须改进 /** * @author 刘梦昊 2019/11/18 16:20 */ public class Player { public int id; public String name; public List<Poker> pokers; ; public Player(int id, String name) { this.id = id; this.name = name; pokers = new ArrayList<>(); } @Override public String toString() { return "Player{" + "id=" + id + ", name='" + name + '\'' + '}'; } } /** * @author 刘梦昊 2019/11/18 16:15 */ public class Poker implements Comparable<Poker>{ public String value; public String color; // 点数权重 public Integer valueNum; // 花色权重 public Integer colorNum; public Poker(String value, String color, Integer valueNum, Integer colorNum) { this.value = value; this.color = color; this.valueNum = valueNum; this.colorNum = colorNum; } @Override public String toString() { return this.color + this.value; } @Override public int compareTo(Poker o) { if (this.value != o.value) { return this.valueNum.compareTo(o.valueNum); }else { return this.colorNum.compareTo(o.colorNum); } } } /** * @author 刘梦昊 2019/11/18 16:21 */ public class PokerGame { private Map<Integer,Player> players = new HashMap<>(); public static void main(String[] args) { PokerGame pokerGame = new PokerGame(); // 创建牌 ArrayList<Poker> pokersList = pokerGame.createPokers(); // 洗牌 pokerGame.flushPoker(pokersList); // 创建玩家 pokerGame.createPlayer(); // 玩家拿牌 pokerGame.getPokers(pokersList); // 游戏开始,比较牌的大小 pokerGame.comparePoker(); } public ArrayList<Poker> createPokers() { System.out.println("---------------创建扑克牌中---------------"); ArrayList<Poker> list = new ArrayList<>(); String[] valueArr = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"}; String[] colorArr = {"方块","梅花","黑桃","红桃"}; for (int i = 0; i < valueArr.length; i++) { for (int j = 0; j < colorArr.length; j++) { list.add(new Poker(valueArr[i],colorArr[j],(i + 3),j)); } } System.out.println("---------------创建扑克牌成功!全部扑克牌如下---------------"); for (Poker poker : list) { System.out.print(poker + ","); } System.out.println(); return list; } public void flushPoker(ArrayList<Poker> list) { System.out.println("---------------正在洗牌中---------------"); Collections.shuffle(list); System.out.println("---------------洗牌结束---------------"); for (Poker poker : list) { System.out.print(poker + ","); } } public void createPlayer() { System.out.println("游戏开始,请创建俩个玩家"); int playerNum = 2; int id; String name; Player player; Scanner scanner = null; for (int i = 1; i <= playerNum; i++) { System.out.println("请输入第" + i + "位玩家的ID和姓名"); while (true){ try { System.out.println("请输入id:"); scanner = new Scanner(System.in); id = scanner.nextInt(); if (players.containsKey(id)) { System.out.println("id已经存在"); continue; } break; }catch (InputMismatchException e) { System.out.println("输入有误,请输入一个整数"); continue; } } while (true) { System.out.println("请输入玩家1的昵称:"); name = scanner.next(); player = new Player(id, name); if (players.containsValue(player)) { System.out.println("输入的昵称已经存在了"); }else { break; } } players.put(id,player); } System.out.println("创建玩家结束,开始游戏."); } public void getPokers(ArrayList<Poker> PokersList) { // 拿牌的次数 int num = 2; // 拿牌的下标 int j = 0; for (int i = 0; i < num ; i++) { for (Map.Entry<Integer, Player> entry : players.entrySet()) { entry.getValue().pokers.add(PokersList.get(j)); System.out.println("玩家" + entry.getValue().name + "拿牌"); j++; } } // 显示玩家拿的牌 for (Map.Entry<Integer, Player> entry : players.entrySet()) { System.out.println("玩家" +entry.getValue().name + "拿的牌:" + entry.getValue().pokers); } } public void comparePoker() { // 创建一个用于存储玩家最大手牌的集合 List<Poker> maxPokers = new ArrayList<>(); for (Map.Entry<Integer, Player> entry : players.entrySet()) { List<Poker> pokerList = entry.getValue().pokers; // 玩家手中的牌排序后 Collections.sort(pokerList); maxPokers.add(pokerList.get(pokerList.size()-1)); } // 排序后最大手牌集合中的最大值在集合的最后一个 Collections.sort(maxPokers); // 遍历玩家中的手牌,查看谁手中包含那个最大手牌,即为游戏获胜者 for (Map.Entry<Integer, Player> entry : players.entrySet()) { boolean result = entry.getValue().pokers.contains(maxPokers.get(maxPokers.size()-1)); if (result) { System.out.println("玩家" + entry.getValue().name + "的最大手牌为:" + maxPokers.get(maxPokers.size()-1)); System.out.println("玩家" + entry.getValue().name + "获胜"); } } } }
运行结果:
---------------创建扑克牌中---------------
---------------创建扑克牌成功!全部扑克牌如下---------------
方块3,梅花3,黑桃3,红桃3,方块4,梅花4,黑桃4,红桃4,方块5,梅花5,黑桃5,红桃5,方块6,梅花6,黑桃6,红桃6,方块7,梅花7,黑桃7,红桃7,方块8,梅花8,黑桃8,红桃8,方块9,梅花9,黑桃9,红桃9,方块10,梅花10,黑桃10,红桃10,方块J,梅花J,黑桃J,红桃J,方块Q,梅花Q,黑桃Q,红桃Q,方块K,梅花K,黑桃K,红桃K,方块A,梅花A,黑桃A,红桃A,方块2,梅花2,黑桃2,红桃2,
---------------正在洗牌中---------------
---------------洗牌结束---------------
方块7,梅花7,方块5,红桃J,方块J,黑桃Q,黑桃5,红桃8,梅花6,方块A,梅花5,红桃4,黑桃2,梅花4,方块8,黑桃4,梅花10,黑桃J,红桃Q,方块10,梅花Q,黑桃8,方块4,梅花3,红桃7,方块9,梅花K,红桃6,红桃3,方块6,黑桃6,方块3,红桃9,梅花J,黑桃10,红桃10,红桃2,梅花A,方块Q,红桃A,黑桃A,方块K,梅花9,黑桃7,梅花8,黑桃3,红桃5,梅花2,方块2,红桃K,黑桃K,黑桃9,游戏开始,请创建俩个玩家
请输入第1位玩家的ID和姓名
请输入id:
1
请输入玩家1的昵称:
haoge
请输入第2位玩家的ID和姓名
请输入id:
2
请输入玩家1的昵称:
qiuge
创建玩家结束,开始游戏.
玩家haoge拿牌
玩家qiuge拿牌
玩家haoge拿牌
玩家qiuge拿牌
玩家haoge拿的牌:[方块7, 方块5]
玩家qiuge拿的牌:[梅花7, 红桃J]
玩家qiuge的最大手牌为:红桃J
玩家qiuge获胜
Process finished with exit code 0
查看全部 -
List中contains方法实现原理是,遍历每个List中的元素(Course),调用这些元素(Course)的equals方法和入参的对象进行比较,如果有一个返回真则这个contains方法返回真。
查看全部 -
<table><tbody><tr class="firstRow"><td><p>返回值</p></td><td><p>方法名</p></td><td><p>解释</p></td></tr><tr><td><p>byte</p></td><td><p>byteValue()</p></td><td><p>将该Integer转为byte类型</p></td></tr><tr><td><p>double</p></td><td><p>doubleValue()</p></td><td><p>转为double类型</p></td></tr><tr><td><p>float</p></td><td><p>floatValue()</p></td><td><p>转为float类型</p></td></tr><tr><td><p>int</p></td><td><p>intValue()</p></td><td><p>转为int类型</p></td></tr><tr><td><p>long</p></td><td><p>longValue()</p></td><td><p>转为long类型</p></td></tr><tr><td><p>static int</p></td><td><p>parseInt(String s)</p></td><td><p>将字符串转换为int类型</p></td></tr><tr><td><p>String</p></td><td><p>toString()</p></td><td><p>转为字符串类型</p></td></tr><tr><td><p>static Integer</p></td><td><p>valueOf( String s)</p></td><td><p>将字符串转换为Integer类型</p></td></tr></tbody></table><p> </p><table><tbody><tr class="firstRow"><td><p>基本类型</p></td><td><p>对应的包装类</p></td></tr><tr><td><p>byte</p></td><td><p>Byte</p></td></tr><tr><td><p>short</p></td><td><p>Short</p></td></tr><tr><td><p>int</p></td><td><p>Integer</p></td></tr><tr><td><p>long</p></td><td><p>Long</p></td></tr><tr><td><p>float</p></td><td><p>Float</p></td></tr><tr><td><p>double</p></td><td><p>Double</p></td></tr><tr><td><p>char</p></td><td><p>Character</p></td></tr><tr><td><p>boolean</p></td><td><p>Boolean</p></td></tr></tbody></table><p><br/></p>查看全部
-
java类型转换
查看全部 -
泛型集合中的限定类型不能使用基本数据类型。
可以通过使用包装类限定允许存入的基本数据类型,如int→Integer、long→Long、boolean→Boolean
查看全部 -
捕获异常的总结
查看全部 -
StringBuilder append()在字符串末尾添加字符串
StringBuilder insert(int," " )在指定位置添加内容
查看全部 -
StringBulider 对象名 = new StringBuilder(字符串);
创建一个存储字符串的对象,可以改动。
查看全部 -
indexOf() 第一次出现的位置
lastIndexOf() 最后一次出现的位置
substring(整数) 获取此位置后的字符串
booleanequals() 比较两字符串
toLowerCase/UpperCase 转换为大小写
char charAt(int ) 获取字符串中指定位置的字符
查看全部
举报