史上最全讲解:JAVA中的数组 方法 面向对象

文章目录

  • 史上最全讲解:JAVA中的数组 方法 面向对象
    • 数组
      • 数组的定义:
      • 数组的特点:
      • 数组的初始化:
      • 数组的遍历: 从前到后拿到每一个数据
    • 方法
      • 方法定义:
      • 方法特点:
      • 方法的分类:
      • 方法的重载
      • 递归
    • 面向对象
      • 面向过程与面向对象之间的区别:
      • 面向对象提出2个概念:

数组

数组的定义:

相同数据类型的有序集合
数组和变量都可以用来存储数据但是变量只能存储单个数据,而数组可以存储多个数据。

数组的特点:

  • 引用数据类型,容器
  • 一个数组中的多个数据数据类型一致|相同
  • 长度一旦确定不可改变
  • 数组中的数据是有序的(索引|下标)
    索引|下标:从0开始,以此+1
    索引的变化范围:
    从0开始,最后一个数据的索引: 数组的长度-1 --> 数组名.length-1
    数组的长度:
      数组名.length
    操作数组中的数据(赋值|获取值|修改值):
    根据数组的下标|索引 数组名[索引|下标]–>定位到数组中的每一个小空间
      数组的声明: []
      数据类型[] 数组名; --推荐使用
      数据类型 数组名[];
      数据类型 : 指明数组中存放的每一个数据的类型

数组的初始化:

1.动态初始化:先根据数据的长度创建一个数组,但是没有赋值,确定数据的时候再赋值
数据类型[] 数组名 = new 数据类型[长度n];
数组中的数据没有赋值存在默认值:
整数0 小数0.0 字符串null 字符型’ ’ 布尔型false
2.静态初始化:创建的同时赋值
数据类型[] 数组名 = new 数据类型[]{值1,值2,值3…};
数据类型[] 数组名 = {值1,值2,值3…}; --简略写法,不够灵活,但是简单

数组的遍历: 从前到后拿到每一个数据

1.普通for循环
遍历索引->循环变量i控制数组的索引
2.增强for循环 | for…each
for(数据类型 变量名: 数组名|容器名){
  变量代表数组中的每一个数据(非索引)
}

public class ArrayTest {public static void main(String[] args){//A:遍历int类型的数组 依次输出每个数组元素System.out.println("遍历int类型的数组: ");int[] num = new int[]{1,2,3,5,6,4};for(int i=0;i<num.length;i++){System.out.print(num[i]+" ");}System.out.println();//B:遍历字符数组System.out.println("遍历字符数组: ");char[] ch = new char[]{'a','b','c'};for(int i=0;i<ch.length;i++){System.out.print(ch[i]);}System.out.println();//C:最值:获取数组中的最大值和最小值System.out.print("获取数组中的最大值和最小值: ");int min = num[0];int max = num[0];for(int i=1;i<num.length;i++){if(max<num[i]){max=num[i];}if(min>num[i]){min=num[i];}}System.out.println("max = "+max);System.out.println("min = "+min);//D:逆序:倒叙输出数组元素System.out.print("倒叙输出数组元素: ");for(int i=num.length-1;i>=0;i--){System.out.print(num[i]+" ");}/** E:将一个整型数组中的0去掉后但会一个新数组.*     例如: int[] arr={1,26,0,8,10,50,8,0,7,35,0,4,3,20,0,17};*  要求:将以上数组中的0去掉,将不为0的值存入一个新数组,生成新的数组作为返回值.*     int newArr={1,26,8,10,50,8,7,35,4,3,20,17};*/System.out.println("将一个整型数组中的0去掉后但会一个新数组");int[] arr={1,26,0,8,10,50,8,0,7,35,0,4,3,20,0,17};int[] newArr = new int[12];int j = 0;for(int i = 0;i<arr.length;i++){if(arr[i] == 0){continue;}newArr[j] = arr[i];j++;}for(int i=0;i<arr.length-4;i++){System.out.println(newArr[i]);}

方法

方法定义:

处理功能的代码段

方法特点:

1.方法不能嵌套,定义在类中方法外
2.不调用不执行

方法的分类:

  • 有返回值类型的方法:如果一个方法执行过后需要返回一个结果给调用者,这个方法就应该定义为一个有返回值类型的方法。
    格式:
    修饰符 返回值类型 方法名(参数列表){
    处理功能的代码段;
    return 返回的结果;
    }
    修饰符: 访问权限修饰符,先默认为public static
    返回值类型: 方法执行过结果的数据类型(基本|引用数据类型)
    **方法名:**方法的名字 调用方法的时候需要根据方法名,标识符符合标识符的命名规范|规则。
    **参数列表:**可以没有参数,可以有多个参数
    方法定义时候|执行过程中,不确定的数据,可以定义在方法的参数列表上
    参数: 数据类型 参数名1,数据类型 参数名2,…(相当于一个局部变量的声明,作用域为当前定义的方法中)
    {}: 实现功能的代码
    return: 1)返回值数据给方法的调用者 2)提前结束方法
    方法的调用: 方法名(参数) -->执行方法中的代码
    1.直接调用 方法名(实际参数) -->无法使用返回值
    2.赋值调用
    3.输出调用 System.out.println(getPI());
  • 没有返回值类型的方法
    修饰符 void 方法名(参数列表){
      方法体语句;
      [return;] 可以选择性的添加
    }
    **void:**没有返回值类型的方法
    return: 提前结束方法
    调用方式: 直接调用
    参数:
    形式参数:形参 -->定义方法时候()中的参数 --> 局部变量的声明
    实际参数:实参 -->调用方法时候()中的参数 --> 局部变量的赋值
    形参和实参要一一对应
      数据类型要一致
      顺序要一致
      个数要一致
public class Test02{ public static void main(String[] args){ System.out.println(getMax(3,5));numCompare(3, 5);multiTable(10);}//获取两个数中的较大值public static int getMax(int a,int b){int max;if(a > b){max = a;}else{max = b;}return max;}//比较两个数据是否相同public static void numCompare(int a, int b){if(a == b){System.out.println("两个数相同");}else{System.out.println("两个数不同");}}//输出m行乘法表public static void multiTable(int m){for(int i=1;i<=m;i++){for(int j=1;j<=i;j++){System.out.print(j+"*"+i+"="+j*i+"\t");}System.out.println();}}
}

方法的重载

  • 方法的重载定义:重载是方法重要的特性。一个类中多个方法,方法名相同,参数列表不同|方法签名不同,这些方法就构成方法的重载特性
    方法签名: 方法名+参数列表 方法名(参数)
    参数列表不同:
      参数的类型不同
      参数的个数不同
      不同类型的参数的位置|顺序不同

重载方法与修饰符无关
重载方法和返回值类型|有无返回值无关
方法的重载和参数的名字无关
重载方法如何调用:
  根据实参进行决定
类中的方法其实是封装的一种体现,方法的重载就是多态的体现

public class OverLoad05{ public static void main(String[] args){ test(1,"你好");test("你好",1);System.out.println("求面积");double area = getArea(3.5,2);System.out.println(area);}public static void test(int a){System.out.println(" test(int a)");}public static void test(int i,String s){System.out.println(" test(int i,String s)");}public static void test(String s,int x){System.out.println(" test(String s,int x)");}//求长方形面积       长*宽public static double getArea(double length, double width){return length*width;}//求圆形面积       π*半径的平方public static double getArea(double radius){return 3.14*radius*radius;}//求梯形面积       (上边+下边)*高/2public static double getArea(double upLen, double downLen, double height){return (upLen + downLen)*height/2;}
}

递归

  • 方法的递归定义:自己调用自己

      递归头: 停止自己调用自己的条件递归体: 自己调用自己临界条件: 递归头递归前进段:从弟子调用自己到临界条件之间递归后推段:结果返回给调用的上一层
    
public class Recursion06{ public static void main(String[] args){ System.out.println(rec(5));print(7);}//阶乘: 求 某个数的阶乘  5! = 5*4*3*2*1//返回值:要int         参数:int ipublic static int rec(int i){if(i==1){return 1;}return i*rec(i-1);}//打印几行乘法表:参数传几,打印前几行乘法表//返回值:不需要 参数:需要 int i 行数public static void print(int i){if(i==1){System.out.println("1*1=1");return;}print(i-1);//打印当前行for(int j=1;j<=i;j++){System.out.print(j+"*"+i+"="+i*j+"\t");}System.out.println();}
}

面向对象

面向过程与面向对象之间的区别:

都是思想,思维方式
  面向过程:“我该如何实现?” 然后一步一步完成就可以了
  面向对象:"我该招谁来完成?"只关注对象,不关注实现步骤
  面向对象是依托于面向过程的
面向对象的优点:
  1.可以将复杂的问题简单化
  2.更贴近与现实生活的的思维方式
  3.面向对象更贴近于管理者的角度,面向过程贴近与执行者

面向对象提出2个概念:

让生活与程序建立联系,类,对象

  • 类:
       一系列事物的模板|图纸 ,一系列事物|对象抽取出共性定义在类中,根据这个类创建的对象都具有这些特性
    对象:
       生活中真实存在的每一个事物 粉色 路虎
    先定义类,才能根据类构建对象 先有图纸才有车
    自定义类:
       1.手机能做什么? 功能: 打电话 玩游戏 看小说 听音乐 动词 -->成员方法定义功能
       2.手机都有什么特点|特征? 属性: 品牌 颜色 价格 尺寸 名词 -->成员变量定义属性
    格式:
    class 手机{
       //成员变量
       修饰符 数据类型 变量名;
    }
    //不加static的方法就是成员方法
//先定义一个Car类,文件保存为Car.java
public class Car{public String name;public String brand;double price;public void drive(){System.out.println("跑起来");}
}
//在调用car类里成员属性和成员方法,文件保存为CarTest.java
public class CarTest{public static void main(String[] args){Car c = new Car();System.out.println(c.name);System.out.println(c.brand);System.out.println(c.price);c.drive();}
}

史上最全讲解:JAVA中的方法 数组 类相关推荐

  1. 史上最全讲解:JAVA中的Map与Thread

    史上最全讲解:JAVA中的Map与Thread 文章目录 史上最全讲解:JAVA中的Map与Thread Map HashMap TreeMap Properties Thread 开启多线程方法1 ...

  2. java 异常 中英文_史上最全的Java中所有Exception异常中英文对照

    Java中所有Exception异常中英文对照AclNotFoundException, 如果对不存在的访问控制列表进行访问,则会 ArithmeticException 算数异常 ArrayInde ...

  3. java spring框架 注解_史上最全的java spring注解

    史上最全的java spring注解,没有之一 注解是个好东西,但好东西我们也是看见过,整理过,理解过,用过才知道好.不求我们每个都记住,但求保有印象,在需要的时候能提取出来再查找相关资料,平时工作就 ...

  4. @async注解_史上最全的java spring注解

    史上最全的java spring注解,没有之一 注解是个好东西,但好东西我们也是看见过,整理过,理解过,用过才知道好.不求我们每个都记住,但求保有印象,在需要的时候能提取出来再查找相关资料,平时工作就 ...

  5. 欧空局(esa)下载哨兵-Sentinel影像-(史上最全讲解,老少皆宜)

    欧空局(esa)下载哨兵-Sentinel影像-(史上最全讲解,老少皆宜) 文章目录 欧空局(esa)下载哨兵-Sentinel影像-(史上最全讲解,老少皆宜) 前言 一.欧空局官网 二.网站注册 三 ...

  6. 史上最全阿里 Java 面试题总结及答案

    史上最全阿里 Java 面试题总结及答案 qq_35151346 于 2019-08-06 13:26:53 发布 33740 收藏 817 分类专栏: 面试题 文章标签: 阿里巴巴 面试题 答案 j ...

  7. 史上最全外链资源寻找方法

    很久没来A5发布文章了,期间都在从事seo培训工作,今天笔者在闲暇之余为大家分享一篇<史上最全外链资源寻找方法>的文章. 外链资源寻找的方法是数不胜数,大家只需百度一下便可以看到N个,但是 ...

  8. 史上最全的Java学习路线

    java基础 一.Java的历史和三大版本 1. Java的发展史 2. Java语言能做什么 二.Java的开发环境 1. 配置开发环境 三.Java的第一个程序及运行原理 JVM 的组成部分 写第 ...

  9. 史上最全的Java面试题

    疯狂创客圈:如果说Java是一个武林,这里的聚集一群武痴, 打磨着九阳神功和独孤九剑,欢迎砸场子 QQ群链接:疯狂创客圈QQ群 如下题目如果全部能搞定,至少涨薪50%: [第一部分] 面试要领 [第1 ...

最新文章

  1. 修复错误ModuleNotFoundError: No module named ‘pip‘
  2. Leetcode 106. 从中序与后序遍历序列构造二叉树 解题思路及C++实现
  3. 【读书笔记】阅读的危险
  4. 《微软开源跨平台移动开发实践》团购通知
  5. 指令系统——数据寻址(2)(详解)
  6. 深入学习Java多线程——并发机制底层实现原理
  7. 如何解决Macbook pro无法写入U盘的问题
  8. java没有更新_java – JProgressBar没有更新,找不到线索
  9. 【转】QT实现不规则窗体
  10. android edittext drawable,android – 在事件上显示复合drawable到EditText
  11. map() 与 nest.map_structure() 的区别及用法
  12. spring-bean(xml方式管理)
  13. python 最小二乘法库_利用python搞机器学习——最小二乘法 | 学步园
  14. python 会议室预约系统解决方案_智能会议预约系统解决方案
  15. 服务器装系统报0x0000005d,安装Win8系统出现error code 0x0000005d如何解决?
  16. 台式计算机拆卸步骤,拆卸和组装台式计算机主机的说明步骤
  17. 计算机制作贺卡教案,三八爱心节贺卡教案
  18. jdk版本和maven版本的匹配问题,maven报错method ‘void <init>()‘ not found
  19. 数学与计算机专业属于金融类吗,数学与应用数学本科,考研能考哪些专业?计算机金融最简单?...
  20. 【Christopher Manning课件】词汇习得Lexical Acquisition

热门文章

  1. Ubuntu 18.04安装英特尔Optane DC Persistent Memory Module配置工具ipmctl
  2. MVD微型机器视觉设备 (Micro Vision Device) ---- 源于OpenMV,超越OpenMV
  3. 深度学习pipeline和baseline是什么意思?
  4. 做论文必须知道什么叫review
  5. matlab振动信号源程序,MATLAB 王济老师《 在振动信号处理中的应用》书中源程序 238万源代码下载- www.pudn.com...
  6. 暑假不要摆烂,整理好了Python70个项目,快爬起来练手
  7. cdr处理matlab,Matlab GPS Toolbox
  8. ubuntu深度学习软硬件开发环境搭建
  9. uniapp js缓存
  10. 低通滤波器(LPF)