当前位置: 首页 > article >正文

25.1.3

java数组:
dataType[] arrayRefVar  //推荐写法
//int[]  mylist
//或
dataType arrayRefVar[]
//int mylist[]

创建数组对象:

arrayRefVar = new dataType[arraySize];
dataType[] arrayRefVar = new dataType[arraySize];

for-each循环:

java for-each循环,会类比于python for i in range array:这里的i不是指数组的下表,而是“数组”内的内容。如:hello,world!我们的循环i第一个表示的是h。

Java的for each循环就是如此。

for(type element: array)
{
    System.out.println(element);
}

double[] array={1.0,5.3,6.7}
for (double i :array){
    System.out.println(i);
}
//输出1.0 5.3  6.7
数组在函数的应用:
  • 作为存入参数
  • 作为返回参数
//假设我们要做对数组里的数字都加一。
public static int[] ArrayAddOne(int[] array) {
    for (int i :array){
        i=i+1;
    }
    return array 
}

//其中第一个int[]是我们返回数值的类型,是一个int数组。
//第二个int[],表示传入一个int数组。这个数组被我们命名为array。
//ArrayAddOne是我们要调用的方法名。

多维数组:

type[][] typeName = new type[typeLength1][typeLength2];

//String[][] str = new String[3][4];

数组小测试:

class TestIt
{
    public static void main ( String[] args )
    {
        int[] myArray = {1, 2, 3, 4, 5};  //定义数组
        ChangeIt.doIt( myArray );  //调用class类中的doIt方法,
        for(int j=0; j<myArray.length; j++)   //遍历数组输出
            System.out.print( myArray[j] + " " );
    }
}
class ChangeIt
{
    static void doIt( int[] z ) 
    {
        z = null ; //将z指向null。
    }
}

结果输出:

  •  1 2 3 4 5   
class LowHighSwap
{
    static void doIt( int[] z )   //这里对数组的修改,直接影响数组对象的结果
    {
        int temp = z[z.length-1];//第一个位置和最后一个位置互换数值
        z[z.length-1] = z[0];
        z[0] = temp;
    }
}

class TestIt
{
    public static void main( String[] args )   //效果和上题差不多
    {
        int[] myArray = {1, 2, 3, 4, 5};
        LowHighSwap.doIt(myArray);
        for (int i = 0; i < myArray.length; i++)
        {
            System.out.print(myArray[i] + " ");
        }
    }
}

 5 2 3 4 1

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

ar[4]值为多少   //第一个位置下表为0

  •  5
int [] ar = {1,2,3,4,5,6};

数组ar的大小是 :   //算数组内的数据个数即可

  •  6
class ChangeIt
{
    static void doIt( int[] z )
    {
        int[] A = z;   //这里对A进行赋值,其实两个指向的对象都是最开始的对象myArray
        A[0] = 99;    //这里赋值就是对myArray进行修改。
    }
}

class TestIt
{
    public static void main( String[] args )  //和第一题差不多的思路
    {
        int[] myArray = {1, 2, 3, 4, 5};
        ChangeIt.doIt(myArray);
        for (int i = 0; i < myArray.length; i++)
        {
            System.out.print(myArray[i] + " ");
        }
    }
}

结果:

 99 2 3 4 5

float [] nums = {1.1f,2.2f,3.3f};

以下哪个循环将在一个单独的行中显示此数组中的所有数字 :

for (int i =0; i < 3; i++) System.out.print( nums[i]);     

//nums数组长度为3,下标分别为0,1,2,故到<3,刚好结束循环

void blur(char[] z, String st)
{
    if(z.length < st.length()) return;  
    //比较两个的长度如何,希望st的长度小于或者等于z
    for (int i = 0; i < st.length(); i++) {       //赋值
        z[i] = st.charAt(i);
    }
}

下面这个方法实现什么功能 ?

如果数组中有足够的空间,则会将字符串中的字符逐个复制到数组中。

哪一个选项可以在索引处找到名为 ar 的数组中的最后一个值?

ar.length - 1     //数组起始是0

数组是一个?

相同的数据类型,值可相同,也可不同  //数组内数据类型一样,其他可不一样

double[] rats = {1.2, 3.4, 5.6};
routine( rats );

Java 使用按值调用。 以下方法调用传递给程序的值是多少 ?

  •  rats 数组的引用
int[] arr = new int[9];
System.out.println(arr[9]);

以下代码的输出是什么 ?

  •  错误,因为索引超出范围   //数组末尾应该是length-1
byte[] values = new byte[x];

以下数组最高索引值是多少 ?

  •  x-1  //上题同理

以下程序段的输出是什么 ?

int[] num7 = {1, 3, 5, 2, 8, 9, 5, 0};
int x7 = num7[0];
for (int i = 0; i <= num7.length-1; i++)   
//循环比较数组内的大小,最小的会被赋值到x7上
{
    if(num7[i] < x7)
    {
        x7 = num7[i];
    }
}
System.out.println(x7); 
  •  0

以下数组的长度是?

int[] grades = new int[4];
  •  4 

以下代码打印到控制台的数字是多少 ?

int[] numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9};
for (int i = 0; i < 8; i++) {   //从下标0打印到下标7,则从1打印到8
    System.out.println(numbers[i]);
}
  •  1-8
日期时间:

Date类的包

//创建对象Date()此方法可以以当前的时间创建对象

//Date(long millisec)   该参数是从 1970 年 1 月 1 日起的毫秒数。

//参考自菜鸟教程https://www.runoob.com/java/java-date-time.html
import java.util.Date;
  
public class DateDemo {
   public static void main(String[] args) {
       // 初始化 Date 对象
       Date date = new Date();
        
       // 使用 toString() 函数显示日期时间
       System.out.println(date.toString());
   }
}
日期的比较
  • 使用 getTime() 方法获取两个日期(自1970年1月1日经历的毫秒数值),然后比较这两个值。
  • 使用方法 before(),after() 和 equals()。例如,一个月的12号比18号早,则 new Date(99, 2, 12).before(new Date (99, 2, 18)) 返回true。
  • 使用 compareTo() 方法,它是由 Comparable 接口定义的,Date 类实现了这个接口。
使用 SimpleDateFormat 格式化日期

import  java.util.*;
import java.text.*;
 
public class DateDemo {
   public static void main(String[] args) {
 
      Date dNow = new Date( );  //创建当前时间的对象
      SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss");

        //想要输出的格式
 
      System.out.println("当前时间为: " + ft.format(dNow));
   }
}

方法

修饰符 返回值类型 方法名(参数类型 参数名){
    ...
    方法体
    ...
    return 返回值;
}

方法可以使我们写的代码更简洁,也有利于我们维护

方法的调用

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

当程序调用一个方法时,程序的控制权交给了被调用的方法。当被调用方法的返回语句执行或者到达方法体闭括号时候交还控制权给程序。(这个跟汇编语言、计算机组成原理有关)可以不深究。

整体使用的简单例子

上例中我们在add中加入了两个int a,int b 我们要严格按照方法内需要传的参数进行书写。

方法的重载

拿上例来说就是我们的方法名字都叫add,但我们方法内的参数可以换,我们可以换成浮点数相加如:

public static double add(double a, double b) {
    return a + b;
}
可变参数

有时我们不知道我们具体有多少个数据,如果一个一个写方法太过麻烦,因此我们可以使用可变参数(注意:可变参数需要写在最后面),只需要在我们需要多个参数的参数类型后面加入...即可

以上例add为例

构造方法

本质上还是方法,不过他的作用是在我们创建对象时用来初始化对象的属性。

构造方法的类型

  • 无参构造方法(默认的方法)
  • 有参构造方法

无参构造方法:

不需要参数。

有参构造方法:

调用有参构造方法时,可以为对象的属性进行初始化。如:下面的人有name(名字)和age(年龄)等等的属性。

public class Person {
    String name;
    int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

构造方法的重载

本质上的目的:就是我们初始化对象的时候可以选择对哪些属性赋值,哪些可以等等再由我们操作赋值。

构造方法的this关键字:

public Person(String name, int age) {
    this.name = name; // this.name 表示类的属性
    this.age = age;
}


http://www.kler.cn/a/466800.html

相关文章:

  • DeepSeek-V3 正式发布,已在网页端和 API 全面上线,性能领先,速度飞跃。
  • oscp备考 oscp系列——Kioptix Level 1靶场 古老的 Apache Vuln
  • Kotlin 委托
  • Level DB --- BloomFilterPolicy
  • Unity3D仿星露谷物语开发16之角色拾取道具
  • 【Pytorch报错】AttributeError: cannot assign module before Module.__init__() call
  • GoFullPage插件:让网页截图变得简单又高效
  • el-form+el-date-picker组合使用时候的回显问题
  • 把vue项目或者vue组件发布成npm包或者打包成lib库文件本地使用
  • element-ui dialog 组件源码分享
  • K8S的伸缩应用程序-扩缩容,版本回滚
  • 使用 apply 方法将其他列的值传入 DataFrame 或 Series 的函数,来进行更灵活的计算或操作
  • Debian 系统中解决中文日志乱码问题
  • 【ShuQiHere】算法的开枝散叶:从机器学习到深度学习的模型总结
  • Qt 状态机使用说明
  • MT8788安卓核心板_MTK8788核心板参数_联发科模块定制开发
  • HTML——64. 数字输入框和活动条
  • 单片机通信
  • 交换机关于环路、接口绑定、链路聚合的相关知识
  • 游戏引擎学习第72天
  • [paddle] 非线性拟合问题的训练
  • React 性能优化
  • 数仓建模(二) 从关系型数据库到数据仓库的演变
  • 淘宝商品详情API返回值说明:Python爬虫代码示例
  • perf:对hutool的BeanUtil工具类做补充
  • 【51单片机零基础-chapter3:按键:独立按键|||附带常见C语句.逻辑运算符】