一、目的
1.创建快捷键并熟练使用
2.学习Java中数组、类、对象的定义以及使用
3.能够在Java中熟练使用系统的方法,如果系统没有的在自己定义
二、知识
1.
在File --Settings--Keymap--Editor进行设置
ctrl+P上一行( -Move Up and Scroll)
ctrl+N下一行(-Move Down and Scroll)
ctrl+B后移back( -Left)
ctrl+F前移forward( -Right)
ctrl+A跳到行首ahead( Move Caret to Line Start)
ctrl+E跳到行尾end (-Move Caret to Line End)
ctrl+W扩大当前界面(File --Settings--Keymap--Main menu-Window-Active Tool Window-Hide All Tool Windows)
ctrl+D复制(-Duplicate Line or Selection)
alt+ctrl+上下键当前行上下移
2.数组
定义数组的两种方式
//引用类型:除了上面的所有类型都是引用类型
//数组一旦被定义 打小就确定了 无法更改
//静态
int [] score = {1,2,3};
String[] name={"Jack","Marry"};
//动态
float[] height = new float[5];
height[0] = 165.4f;
height[1] = 39f;
数组的基本使用
//计算器 长什么样子 能做什么 概念 类
//有一个计算器在手上 具象 对象
Random r = new Random();
//尽量不要扩大变量的作用域
//
int [] count = new int[10];
for (int i = 0; i < 10;i++){
count[i] = r.nextInt(100);//限定100内的随机数
}
数组的三种输出方式
//数组输出方式1
for(int i = 0;i<10;i++){
System.out.print(count[i]+" ");
}
System.out.println();
//数组输出方式2
for(int temp:count){
System.out.print(temp+" ");
}
System.out.println();
//数组输出方式3
System.out.println(Arrays.toString(count));
2.类
类和对象的概念
类:Contact :【姓名 地址 Email 电话号】
Byte char boolean short int long double float
Java 里除了8大基本数据类型之外都是对象
抽象的 不存在的 描述同一事物(具有共同的属性和方法)
人类 :概念 抽象 不能完成具体的事情
小王:对象 具体存在 可以使用
对象:
具体的 实际存在的 某一类的实例化
对象都是new出来的
可以完成具体事情 有内存空间的
同一个类可以有多个对象
定义一个类
**
* 定义一个类 通常情况下一个文件对应一个类
* 修饰符 class 类名(首字母大写){
* 这个类的一些属性:成员变量(通常在类的最上方)
* 这个类的一些功能:方法
* }
* 修饰符:(可无)
* public static final private
* 封装:
* 把私有的东西封装起来不让外部使用,
* 需要给外部使用就暴露出来
* 访问权限: public private protected
* public:公共的想用就用(内部可以用外部* 也可以使用)
* private:私有只能自己使用外部无法访问
* protected:受保护的外部(同一个包)可以访问
* 继承
* 多态
*/
class Person{
String name;
int age;
float score;
}
成员方法的声明和访问
//方法的定义
public void test(){
System.out.println("没返回值没参数的方法");
}
//没有返回值接收一个参数
public void test3(String name){
}
//有多个参数有一个返回值 每个参数用逗号隔开
public int test4(String name,int age){
return 0;
}
//可变参数 相当于一个数组
public int test6(int ... count){
int sum=0;
for(int i = 0;i
对象的创建与使用
public static void main(String[] args){
//创建一个对象 new
//使用对象 .
//对象一旦创建 属性变量有初值
// char '' short long int 0
// float double 0.0 boolean false byte 0
//引用数据类型:对象类型的变量 null
Person xw=new Person();
//给这个对象对应的属性赋值
xw.age=0;
xw.name ="小王";
xw.score =140.5f;
xw.test() ;//方法在外部:通过对象xw来调用test
int result = xw.test6(new int[]{4, 5, 3, 6, 1, 8, 2, 7});//这个对象没有名字 叫匿名对象 作为一个参数传递
System.out.println(result);
}
三、应用:猜数字游戏的实现
代码:
class GuessNumber{
public static void main(String[] args) {
//保存原始数字
int [] org = new int[4];
//保存猜测的数字
int[] guess=new int[4];
//产生4个随机数
Random random = new Random();
for(int i = 0;i<4;i++){
//产生一个随机数
int temp = random.nextInt(10);
//判断是否存在
boolean result =contains(org,temp);//转换org为Arrays类型
if(result){
//确保i对应的位置产生一个不重复的随机数
i--;
}else {
org[i] = temp;
}
}
//排序
Arrays.sort(org);
System.out.println(Arrays.toString(org));
//创建一个扫描仪对象Scanner
Scanner scanner = new Scanner(System.in );
//开始游戏
while (true){
int countA = 0;
int countB = 0;
System.out.print("请输入猜测的数字:");
for(int i = 0;i<4;i++){
guess[i]=scanner.nextInt();
}
//判断用户输入
//判断是否存在
for (int i = 0;i<4;i++){
boolean result = contains(guess,org[i]);
if(result == true){
//数字存在
//判断位置是否相同
int index = indexOf(guess, org[i]);
System.out.println("i:"+i+" index:"+index);
if (index == i){
//数字和位置都相同
countA++;
} else{
countB++;
}
}
}
if (countA == 4){
System.out.println("恭喜全对!");
break;
}else{
System.out.println(countA+"A"+countB+"B");
}
}
}
/**
* 在一个数组里面查找某个对象的索引值
* @param val 数组
* @param obj 查找的对象
* @return 索引值
*/
public static int indexOf(int[] val, int obj){
for (int i = 0; i < val.length; i++){
if (val[i] == obj){
return i;
}
}
return -1;
}
public static boolean contains(int[] val,int obj){
for(int i = 0;i
运行:(注意有些电脑上的Android stdio 不能在UTF-8的状态下运行此代码,可以将其改为GB2312)
四、附带扑克游戏
两个玩家一个房间,一人一张牌,比大小
class poker{
public static void main(String[] args){
System.out.println("*****************");
System.out.println("欢迎来到扑克世界");
System.out.println("*****************");
System.out.println("游戏规则:每次游戏从您的账户分配100元进入房间,每次游戏底注为5,每次下注为5的整数倍");
//钱
int totalMoney=100;
int tMoneyA=totalMoney;
int tMoneyB=totalMoney;
int basicMoney=5;
//牌
int A=0;
int B=0;
//下注金额
int costA=0;
int costB=0;
Random random = new Random();
//创建一个扫描仪对象Scanner
Scanner scanner = new Scanner(System.in );
while (true){
//进房间缴费5
System.out.println("您已进入房间,自动缴5元的底注");
tMoneyA-=basicMoney;
tMoneyB-=basicMoney;
System.out.println("玩家A余额为:"+tMoneyA );
System.out.println("玩家B余额为:"+tMoneyB );
//选择
int choiceA=0;
int choiceB=0;
//给两个玩家随机发牌 循环
// 用二位数来代表数字和花色 十位表示数字 个为表花色(3:黑 2:红 1:梅0:方)
int tempA1 = random.nextInt( 12)+2;
int tempA2 = random.nextInt(3);
//输出
number(tempA1);
sign(tempA2);
A=tempA1*10+tempA2;
int tempB1 = random.nextInt( 12)+2;
int tempB2 = random.nextInt(3);
//输出
number(tempB1);
sign(tempB2 );
B=tempB1*10+tempB2;
//玩家1、2先后选择
//玩家1 弃牌 玩家2赢 下注(最低5注)
System.out.println("请玩家A选择操作:1.弃牌 2.下注 :");
choiceA=scanner.nextInt();
if(choiceA==1){
System.out.println("此局玩家B获胜");
tMoneyA-=basicMoney;
tMoneyB+=basicMoney;
}else{
System.out.print("请输入下注金额:");
costA=scanner.nextInt();
//玩家2选择 弃牌 玩家1赢
System.out.println("请玩家A选择操作:1.弃牌 2.下注 :");
choiceB=scanner.nextInt();
if(choiceB==1){
System.out.println("此局玩家A获胜");
tMoneyA+=basicMoney;
tMoneyB-=basicMoney;
}else {
System.out.print("请输入下注金额:");
costB=scanner.nextInt();
//下注开牌 根据牌来判断输赢
if(AB){
System.out.println("此局玩家A获胜");
tMoneyA=tMoneyA+basicMoney*2+costB;
tMoneyB-=costB;
}else{
System.out.println("平局");
}
///输赢加减金额 直至金额为0/
if(tMoneyA==0||tMoneyB==0){
break;
}
}
}
}
if(tMoneyA==0){
System.out.println("此次游戏玩家B获胜!!");
}else{
System.out.println("此次游戏玩家A获胜!!");
}
}
public static void sign(int a){
switch (a) {
case 3:
System.out.println("♠");
break;
case 2:
System.out.println("♥");
break;
case 1:
System.out.println("♣");
break;
default:
System.out.println("♦");
break;
}
}
public static void number(int a){
if(a==11){
System.out.print("J");
}
if(a==12){
System.out.print("Q");
}
if(a==13){
System.out.print("K");
}
if(a==14){
System.out.print("A");
}
if(a<11){
System.out.print(a);
}
}
}
心得
Java中要实现一个功能,可以先在系统中查找有无对应的方法,有的话就可以调用,如果没有的也可以自己定义一个,非常方便。
另外,如果想程序写的快,要善用快捷键。