首页 > 编程语言 >JAVA---04

JAVA---04

时间:2022-08-22 10:44:31浏览次数:52  
标签:JAVA 04 int --- 参数 数组 类型 Java 方法

第四天

1. Java 方法

  1. 什么是方法

    方法是语句的集合,它们在一起执行一个功能

    方法是解决一类问题的步骤的有序组合

    方法包含于对象

    方法在程序中被创建,在其他地方被引用

  1. 方法的设计原则:

    方法的本意是功能块,就是实现某个功能的语句块的集合。

    我们设计方法的时候,最好保持方法的原子性就是一个方法只完成一个功能),这样利于我们后期的拓展

  2. 命名规则:驼峰

  3. 写法:

    [修饰符] 返回值类型 方法名([参数 类型   参数名],[参数 类型   参数名], ... ){

    //方法体;

    }

    /*1.修饰符:是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型
     2.返回值类型:方法可能会有返回值,returnValueTrue是方法返回值的数据类型。无返回值时用void
     3.方法名:是方法的实际名称。方法名和参数名共同构成方法签名
     4.参数类型:是可选的,参数像是一个-——占位符。当被方法调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。
    认识:实参 和 形参。
     5.方法体:方法体包含具体的语句,定义该方法的功能。
    */
  4. 方法的调用

    调用方法:对象名.方法名(实参列表)

    Java支持两种调用方法的方式,根据方法是否有返回值来选择

    • 当方法返回一个值的,方法调用通常被当做一个值

    • 如果方法返回值是void,方法调用一定是一条语句

  5. 方法重载

    • 重载就是在一个类中,有相同的函数名称,但形参不同的参数

    • 方法的重载规则:

      • 方法名称必须相同

      • 参数列表必须不同(个数不同,或类型不同,参数排列顺序不同等)。

      • 方法的返回类型可以相同也可以不相同

      • 仅仅返回类型不同不足以成为方法的重载

     

    简单来说就是:方法名一样,参数列表不同

    实现理论:方法名称相同时,编译器会根据调用方法的参数个数参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器会报错。

     

2.命令行传参

  1. 有时候你希望运行一个程序时候再传递给它信息。这要靠传递命令行参数给main()函数实现。

     

     

     

 

3.可变参数

  • 在JDK1.5开始,Java支持传递同类型的可变参数给一个方法

  • 在方法声明中,在指定参数类型后加一个省略号(...)。

  • 一个方法只能指定一个可变参数,他必须是方法的最后一个参数。任何普通的参数必须在它之前声明。

    public void int (int x,int... y){
       //方法体
    }

     

 

 

4.递归

  自己调用自己

  递归分为两部分:递归头:什么时候不调用自身方法。(如果没有头,将陷入死循环)

  递归体什么时候需要调用自身方法

  注:边界条件、前阶段、返回阶段

  基数小的时候使用,能不用就不用

  理解递归的思想

 

5.数组

  1. 数组的定义:

    • 数组是相同类型数据有序集合

    • 数组描述的是相同类型若干个数据,按照一定的先后次序排列组合而成

    • 其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们

  2. 创建一个数组

    首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法
    dataType[] arrayRefVar; //首选方法

    dataType arrayRefVar[]; //效果相同,但不是首选方法

    Java语言使用new操作符来创建数组,语法如下
    dataType[] arrayRefVar = new dataType[arraySize];


    //方法一:
    int[] a; //定义一个数组
    a = new int [10]; //创建一个数组

       
    //方法二:
    int[] b = new int [10];

     

  3. 三种初始化

    • 静态初始化:创建+赋值

      int[] a={1,2,3};

      Man[] mans = {new Man(1,1),new Man(2,2)};//引用类型的数组
    • 动态初始化:包含了默认初始化

      int a = new int [2];
      a[0]=1;
      a[1]=2'
    • 数组的默认初始化:int型初始值为0,浮点型初始值为0.0,字符型初始化为null

      数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化

  4. 数组的四个基本特点

    • 长度是确定的,数组一旦被创建,它的大小就是不可以改变的

    • 元素必须是相同类型,不允许出现混合类型

    • 数组中的元素可以是任何数据类型,包括基本类型引用类型

    • 数组变量属于引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量

      数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型数组对象本身是在中的

  5. 数组的使用

    • for-Each增强for循环

    int[] a = new a[10];
    for(int x : a){
       System.out.println(x);
    }
    //IDEA中快捷方法:   数组名.for
    • 普通for循环

    • 数组作为方法入参

    • 数组作返回值

     

6.多维数组

  1. 多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每个元素都是一个一维数组。

  2. 二维数组

    int a[][] new int[2][3];//可以看成两行五列的数组等

在 Java中二维数组就完全够用了,因为Java是面向对象变成,我们需要把一个个东西,变成一个个对象

 

7.稀疏数组(一种数据结构)

  

  1. 当一个数组中大部分元素为0,或者为同一值得数组时,可以使用稀疏数组来保存该数组

  2. 稀疏数组的处理方法是:

    • 记录数组一共几行几列,有多少个不同的值

    • 把具有不同值元素行列记录在一个小规模的数组中,从而缩小程序的规模。

    • 如:

      •   

         

         

         

  3. 二维数组和稀疏数组的比较

    二维数组:

        

 

 

    稀疏数组:

        

 

         

 

 

思考:把稀疏数组再还原回去

 

Java的内存

  堆:存放new的对象和数组

  可以被所有的线程共享,不会存放别的对象引用

  栈:存放基本变量类型(会包含这个基本类型的具体数值)

  引用对象的变量(会存放这个引用在堆里面的具体地址)

  方法区:可以被所有的线程共享

  包含了所有的class和static变量

  等:

  

 

 

补充

  1. 方法也就是其他语言里边的函数

  2. return 0; 或 return; //终止方法

  3. Java中都是值传递

  4. JDK1.5以后,支持 可变参数

  5. 注意C语言中数组的定义和Java中数组的定义不同

    • C语言:int a[];

    • Java语言:int[] a; //首选,也可以写int a[]; 但是不推荐

  6. 获取数组长度:arrays.length

  7. IDEA中for-Each增强for循环的快捷方法:数组名.for

  8. 熟悉Arrays类

  9. 学习一下八大排序方法

  10. 我们看到嵌套循环,应该立马就可以得出这个算法的时间复杂度为n^2

标签:JAVA,04,int,---,参数,数组,类型,Java,方法
From: https://www.cnblogs.com/liangchunbo/p/16612047.html

相关文章

  • 面经-ArrayList扩容规则
    如果调用无参arrayList构造方法,则初始长度为0;如果构造带参的构造方法,则初始容量为指定长度。 1.调用add()方法1.第一次扩容为10(从0到9)。2.后续扩容都是前一次的1.5倍......
  • java线上问题跟踪工具Arthas的第一次使用
    Arthas是一款线上监控诊断产品,通过全局视角实时查看应用load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异......
  • Mysql 面试知识点-(理解即可)
    1、关系型和非关系型数据库的区别?关系型数据库的优点-容易理解,因为它采用了关系模型来组织数据。可以保持数据的一致性。数据更新的开销比较小。支持复杂查询(带wher......
  • js拆分选择题各选项【javascript将选择题选项通过正则表达式拆分出来】
    最近做题库项目需要添加试题,尤其是选择题逐个添加各选项很繁琐。通过以下正则表达式可以将选择题题目、选项迅速分离出来,并自动添加到选项文本框$("#split").clic......
  • ln -s 软链接命令
    软链接的作用与使用软链接与硬链接的作用(1)软链接软链接是Linux中常用的命令,它的功能是某一文件在另外一个位置建立一个同步的链接,相当于C语言中的指针,建立的链接直接指......
  • Java中String和byte类型互相转换
    1、string转byte[]StringinStr="helloworld";byte[]bytes=inStr.getBytes(StandardCharsets.UTF_8); 2、byte[]转stringStringoutSrt=newString(by......
  • 上周热点回顾(8.15-8.21)
    热点随笔:· Vuex与前端表格施展“组合拳”,实现大屏展示应用的交互增强 (葡萄城技术团队)· 如何开发一款基于vite+vue3的在线表格系统(下) (葡萄城技术团队)· .NET......
  • Java中数字的四舍五入和取整
    1、向上取整ceilceil的英文意思:天花板,所以向上取整就比较好记忆Math.ceil(1.01)#结果:2 2、向下取整floorfloor的英文意思:地板,所以向下取整Math.floor(1.6)#......
  • 算法---二叉树的前序遍历
    知识点树递归dfs广度优先搜索(BFS)描述给你二叉树的根节点root,返回它节点值的前序遍历。数据范围:二叉树的节点数量满足0≤n≤100 0\len\le100\0≤......
  • CAD二次开发---关于JoinEntity出现eNotApplicable的问题
    作者在使用JoinEntity时出现eNotApplicable的问题,查阅了Autodesk论坛的相关帖子,发现大多数人都有遇到这个问题,但没有找到合适的解决方法,可能原因是进行Join时两Curve需要同......