Java基础语法

数组作为方法返回值

数组作为方法返回值使用 : 方法定义上,在返回值类型这个位置上,写数组

方法的调用者,在调用方法后,接收方法的返回值,可以使用数组来接收

返回的数组也是内存的地址

public static void main(String[] args) {
    //调用方法getArray(),接收方法的返回值
    //方法返回的是数组,数组接收 , 收到的也是地址
    int[] array = getArray();
    System.out.println(array[0]);
}

/*
* 定义方法,返回值类型 是数组
* 方法体中 : 必须有return语句返回,返回数组
*/
public static int[] getArray() {
    //创建数组
    int[] arr = {1,2,3,4,5,6};
    //返回定义好的数组
    return arr;  // return 返回数组,返回的是数组内存中地址
}

数组的对称性判断

数组的对称判断 : 在一个数组中, 最远端的元素是相等的,依次类推

int[] arr = {1,2,3,4,5,4,3,2,1}

需求 : 已知数组,判断是否是对称

    public static void main(String[] args) {
         int[] arr = {1,2,3,4,5,4,3,2,1};
         //调用方法,判断数组是否对称
         //传递数组,获取方法的返回值
         boolean bool = isDuiChen(arr);
         System.out.println(bool);
    }
    
    /*
     *  需求 : 已知数组,判断是否是对称
     *  方法返回值类型 : 运行后的结果数据类型  布尔
     *  方法的参数列表 : 参数是方法中的未知数据, 数组
     */
    public static boolean isDuiChen(int[] arr) {
        //方法体中,实现判断数组的对称性
        //两个变量,保存数组的最小索引和最大索引 (小索引++ , 大索引--)
        for(int min = 0 , max  = arr.length - 1; min <= max ; min++,max--) {
            //比较数组最远端的元素,是否相等
            if(arr[min] != arr[max]) {
                //判定数组不对称,其他计算不在需要
                return false;
            }
        }
        //将数组的所有元素全部比较完成,for循环结束
        //没有不相等的,就是对称数组,返回true
        return true;
    }

字符出现的次数统计

需求 : 键盘输入字符串,可以任意

​ 计算出,这个字符串中,大写字母有几个,小写字母有几个,数字有几个,其他字符有几个

例子 : 键盘数组字符串 abcWA12WE!@

​ 程序的输出结果 : 小写字母3个, 大写字母4个,数字2个,其他字符2个

分析 :

  • 输入的数据是字符串, 需要操作字符串中每个字符, 字符串转成数组

    • 未来的方法 : 字符串方法 toCharArray() 字符串转成 字符数组 char[]
  • 对字符数组遍历

    • 遍历的过程中,判断每个字符属于什么??
    • 判断字符是大写字母 ASCII 65-90
    • 判断字符是小写字母 ASCII 97-122
    • 判断字符是数字 ASCII 48-57
  • 创建4个变量,作用计数器

    • 字符满足条件, 计数器++
    public static void main(String[] args) {
          Scanner sc = new Scanner(System.in);
          String str = sc.nextLine();
          //调用统计字符出现次数的方法
          printCount(str);
      }
      
      /*
       * 定义方法,实现字符出现次数的统计
       * 方法返回值 : 没有返回值,直接输出结果 void
       * 方法参数 :  方法计算的未知数, 字符串
       * 实现步骤 : 
       *   1 : 接收到字符串,转成char[]数组
       *   2 : 创建4个变量,计数器使用 int
       *   3 : 遍历char[]数组,取出每个元素
       *     4 : ASCII码判断,决定是否是大写,小写,数字,或者是其他字符
       *     5 : 满足条件,计数器++
       *   6 : 所有的字符数组遍历完成,计算结束了,输出计算结果 
       *  
       */
      public static void printCount(String str) {
          //  1 : 接收到字符串,转成char[]数组
          char[] ch = str.toCharArray();
          //2 : 创建4个变量,计数器使用 int
          int upperCount = 0; //大写字母计数器
          int lowerCount = 0; //小写字母计数器
          int digitCount = 0; //数字计数器
          int otherCount = 0; //其他字符计数器
          // 3 : 遍历char[]数组,取出每个元素
          for(int i = 0 ; i < ch.length ; i++) {
              //取出数组的元素,赋变量
              char c = ch[i];
              //判断c是否是大写字母
              if(c >= 'A' && c <= 'Z') {
                  upperCount++;
              }
              //判断c是否是小写字母
              else if(c >= 'a' && c <= 'z') {
                  lowerCount++;
              }
              //判断是否是数字
              else if(c >= '0' && c <= '9') {
                  digitCount++;
              }else {
                  //其他字符
                  otherCount++;
              }
          }
          // 6 : 所有的字符数组遍历完成,计算结束了,输出计算结果 
          System.out.println("大写字母出现: "+ upperCount +"次");
          System.out.println("小写字母出现: "+ lowerCount +"次");
          System.out.println("数字出现: "+ digitCount +"次");
          System.out.println("其他字符出现: "+ otherCount +"次");
      }
    

冒泡排序

数组排序 : 默认情况都是升序,从小到大排列

数组 : 原始形态 {5,2,1,4,6} == 排序 {1,2,4,5,6}

排序 : 数组元素的比较,位置交换

冒泡排序 : 数组的相邻元素,比较换位

public static void main(String[] args) {
        int[] arr = {2,6,5,-1,-2,3,1};
        //调用排序方法
        bubbleSort(arr);  //传递数组的地址
    }
    
    /*
     * 定义方法实现数组冒泡排序
     * 方法有返回值吗  :  返回数组
     * 方法有参数吗 : 要排序哪个数组 
     */
    public static void bubbleSort(int[] arr) {  // arr接收到的也是地址
        //外循环控制行数
        for(int i = 0 ; i < arr.length - 1; i++) {
            //内循环,控制比较换位的次数, 一次递减
            // i变量每次++   length-i 越来越小
            
            //j=0 j<3 j++  j变量最大到2
            for(int j = 0 ; j < arr.length - i - 1;j++) {
                //相邻元素比较换位
                if(arr[j] > arr[j+1]) {
                    int temp = arr[j];  //保存j索引元素
                    arr[j] = arr[j+1] ; //j+1索引元素,赋值到j
                    arr[j+1] = temp; //临时变量的值,赋值到j+1
                }
            }
        }
        //排序结束,遍历
        for(int i = 0 ; i < arr.length;i++) {
            System.out.println(arr[i]);
        }
    }
数组排序.jpg

斐波那契数列

黄金分割 : 1 1 2 3 5 8 ... 从第三个数开始,每个数都是前2项的数字之和

计算出,第12位是多少

数组和方法

public static void main(String[] args) {
        int[] arr = new int[12];
        //数组元素赋值
        arr[0] = 1;
        arr[1] = 1;
        //从2索引开始遍历
        for(int i = 2; i < arr.length ; i++) {
            //数组元素的赋值
            arr[i] = arr[i-1] +  arr[i-2];
        }
        //数组遍历
        for(int i = 0 ; i < arr.length ;i++) {
            System.out.println(arr[i]);
        }
    }

裁判评分

实现裁判评分功能 : 裁判数量是固定 (6个裁判)

每个裁判为运动员评分, 去掉一个最高分,去掉一个最低分, 剩余的4个分数求平均值

实现技术数组和方法.

6个裁判,分数键盘输入, 存储在数组里面,在输入的过程中,实现对数组元素的赋值

去掉一个最高分 : 计算出哪个是最高的 最大值获取

所有的分数,求和 - 最大值 - 最小值

public static void main(String[] args) {
        //创建长度为6的数组
        int[] array = new int[6];
        //调用保存数据的方法
        saveData(array);
        //调用方法,实现遍历
        printArray(array);
        
        //调用方法,获取最大值
        int max = getMax(array);
        System.out.println("最大值 : "+max);
        
        //调用方法,获取最大值
        int min = getMin(array);
        System.out.println("最大值 : "+min);
        
        //调用获取平均成绩的方法
        int avg =getAvg(array, max, min);
        System.out.println("最后的成绩是 :" + avg);
    }
    
    
    /*
     * 计算出,去掉最大,和最小值后的平均值
     * 方法是否有返回值 : int
     * 方法是否有参数 : 数组, 最大值,最小值
     */
    public static int getAvg(int[] array,int max,int min) {
        //数组数据的求和,定义变量,保存和值
        int sum = 0;
        for(int i = 0 ; i < array.length;i++) {
            sum = sum + array[i];
        }
        //和值,去掉最大和最小
        return (sum - max - min) / (array.length - 2);
    }
    
    
    /*
     * 实现获取数组的最小值
     * 方法是否有返回值 : int
     * 方法是否有参数 : 数组
     */
    public static int getMin(int[] array) {
        //定义变量,保存数组0索引元素
        int min = array[0];
        for(int i = 0 ; i < array.length ; i++) {
            if(array[i] < min) {
                min = array[i];
            }
        }
        return min;
    }
    
    
    /*
     * 实现获取数组的最大值
     * 方法是否有返回值 : int
     * 方法是否有参数 : 数组
     */
    public static int getMax(int[] array) {
        //定义变量,保存数组0索引元素
        int max = array[0];
        for(int i = 0 ; i < array.length ; i++) {
            if(array[i] > max) {
                max = array[i];
            }
        }
        return max;
    }
    
    
    /*
     * 定义方法,录入6个数据
     * 分别存储在数组中
     * 方法是否有返回值 : 无
     * 方法是否有参数 : 长度为6的数组
     */
    public static void saveData(int[] array) {
        Scanner sc = new Scanner(System.in);
        //循环遍历数组
        for(int i = 0 ; i < array.length ; i++) {
            System.out.println("请输入第" + (i+1) +"个成绩");
            //输入的整数评分,存储在数组中
            array[i] = sc.nextInt();
        }
    }
    
    /*
     * 定义方法,遍历数组
     */
    public static void printArray(int[] array) {
        for(int i = 0 ; i < array.length ; i++) {
            System.out.println(array[i]);
        }
    }

随机数类

随机产生一个数字,随机数. 伪随机数.

计算机,产生随机数,是根据一个计算方法得来的

public static void main(String[] args) {
        Random ran = new Random();
        //ran.nextInt(100); 产生随机数,范围是0-100 可能是0,不会到达100
        for(int i = 0 ; i < 20 ;i++) {
           int num= ran.nextInt(100);
           System.out.println(num);
        }
    }

Eclipse进阶

快捷键

  • Ctrl + 1 意见提示 (工具提出意见) ,程序中出现报错的时候,图标是小叉子
  • Alt + 箭头 (上或者下) 移动代码行
  • Ctrl + Alt + 箭头 (上或者下) 复制并移动代码行
  • Ctrl + D 删除当前行
  • Alt + Shift + S 自动生成代码
  • Ctrl + Shift + F 代码格式化
  • Alt + Shift + M 自动抽取方法
  • Alt + Shift + R 修改名字

大纲视图 (outline)

  • 展示类的结构
    • 绿色的实心圆 : public权限方法
    • 黄色的实心圆 : protected权限方法
    • 蓝色的三角形 : 默认权限方法
    • 红色的方块 : private权限方法
  • 修改名字 : 所有使用到的内容,全部发送改变

Debug调试模式

程序出现问题找不到,程序不出问题,但是运行的结果和你预期不一样

  • 在程序的有效行,行号双击,出现断点
    • 当程序,执行到断点的时候,不在执行,停止
    • 我们自己,可以手动控制程序运行
    • 启动调试模式
      • 程序会出现绿色背景,这行还没有被执行
      • 右侧窗口 Variables变量,看到程序中所有变量的值
      • 按钮 : step over 快捷键F6 代码向下走一行
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343

推荐阅读更多精彩内容

  • 转载请标注原文地址,谢谢! Java 基础语法 对象和类 Java中有一个概念即“万物皆对象”,一个Java程序可...
    Unruly_Wind阅读 819评论 0 3
  • 一、API概述 API概念 API(Application Programming Interface) : 应用...
    辽A丶孙悟空阅读 712评论 0 35
  • 标识符 定义 给包,类,方法,变量起名字的符号。 组成规则 标识符由字母、数字、下划线、美元符号组成。 命名原则:...
    JourWon阅读 3,668评论 0 6
  • 参考菜鸟教程进行编写 一.基本语法 1.1 基本概念 一个Java程序可以认为是一系列对象的集合,而这些对象通过调...
    天蓝如染阅读 416评论 0 1
  • 一、Object类 & System类 Object类 概述Object类是Java语言中的根类,即所有类的父类。...
    辽A丶孙悟空阅读 635评论 0 36