JAVA自学笔记05

Wesley13
• 阅读 478

JAVA自学笔记05

1、方法
1)方法就是完成特定功能的代码块,类似C语言中的函数。
2)格式:
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2,…){
函数体;
return 返回值;
}
①修饰符:对于初学者使用public static
②返回值类型:方法结果的类型
③方法名符合命名规则即可
④实际参数:实际参与运算的
形式参数:定义在方法上的,用于接收实际参数
⑤方法定义在类中但在主方法外
3)调用方式:
单独调用:方法名(变量名1,变量名2,…)一般没有意义
输出调用:System.out.println(单独调用)
赋值调用:用相同返回值类型的变量接收
4)注意事项:
方法不调用不执行
方法间是平级关系,不可嵌套定义
方法可使用常量参数
5)void类型
直接 函数名(参数列表);

@例题1:求两个数据之和的方法

class Test{
public static void main(String args[]){
int x = 1;
int y = -1;
int z = sum(x,y)
}
public static int sum(int a,int b){
return a+b;
}
}

@例题2:输出任意长宽的矩形

import java.util.Scanner;
class Test{
public static void main(String args[]){
Scanner sc = new Scanner(System.in);

int x = sc.nextInt();
int y = sc.nextInt();
print(x,y);
}
public static void print(int m,int n) {
    int i=0,k=0;

    for(;i<m;i++) {
        for(;k<n;k++) {
            System.out.print("*");
                }
            System.out.print('\n');
            k=0;
            }
}
}

2、方法重载
1)方法的功能相同,参数列表不同(参数数目、参数类型)时,java允许它们有相同的方法名
2)JVM依据参数列表识别,与返回值类型无关(即返回值类型可变)

@例题3:比较两个数据是否相等,参数类型分别为两个byte/short/int/longl类型,并进行测试

public static boolean equ(int a,int b){
boolean x = a==b?true:false;
return x;
}
public static boolean equ(byte a,byte b){
boolean x = a==b?true:false;
return x;
}
//以此类推

3、数组
1) 数组是存储同一种数据类型的多个元素的集合,既可以存储基本数据类型,也可以存储引用数据类型
2)格式1:数据类型[]数组名;
格式2:数组类型 数组名[];
3)初始化方式:
①动态初始化:初始化只指定数组长度,由系统为 数组分配初始值
格式:数据类型[]数组名 = new 数据类型[数组长度];
eg:int[] arr = new int[3];
执行System.out.println(arr);
将输出arr的地址
用数组名和编号的配合就可以获取数组中相编号的元素,这个编号被称为索引,即:
数组名[索引];
索引从0开始,到n-1结束。
eg:System.out.println(arr[0]);
②静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度
格式:数据类型 [] 数组名 = new 数据类型【】(元素1,元素2,…);
简化格式:数据类型[] 数组名 = {元素1,元素2…};
4)内存分配:
①空间分类:
栈:存储局部变量(在方法声明中声明的变量称为局部变量)
堆:存储new出来的东西
方法区、本地的地区、寄存器
2)栈与堆的图示:
栈存函数名,函数名指向栈中相应数组首元素,堆存相应各元素

JAVA自学笔记05
3)堆内存所赋默认值
byte/short/int/long 0
float ,double 0.0
char ‘\u0000’
boolean false
引用类型 null
栈内存的数据用完即被释放
4)数组赋值
类型 []数组名 = 另一数组名;
@例题4: 定义一个数组,输出该数组名(地址)和所有数组元素

int []arr = new int[3];
System.out.println(arr);

int i =0;
for(;i<3;i++){
System.out.println(arr[i]);
}

5)数组操作中的常见问题
①数组索引越界:访问到了数组中不存在的索引时发生
索引超过数组容量ArrayIndexOutOfBoundsException
②空指针异常:数组引用没有指向实体,却在操作实体中元素时
eg:arr = null;
System.out.println(arr[0]);
发生异常,数组已不再指向堆内存
NullPointerException

6)数组遍历:依次输出数组中的所有元素
使用循环

//eg:
int []arr = {...};
//用length接收数组长度
int l = arr.length;//格式:数组名.length;

7)多个数组的遍历
利用方法改进:

//参数列表:int[] 数组名  返回值类型:void
//eg:
public static void printArray(int[] arr){
...
}

8)求数组的最值

public static int maxNumber(int arr[]){
int max = arr[0];
for(int x = 1;x<arr.length;x++){
if(arr[x]>max){
max = arr[x];
}
}
return max;
}

9)数组元素逆序
把0索引和arr.length-1的数据交换
把1索引和arr.length-2的数据交换
只要做到arr.length/2的时候即可

public static reverse(int[]arr){
int i = 0;
for(;i<=arr.length/2;i++){
int temp=arr[i];
arr[i]=arr[arr.length-i-1];
arr[arr.length-i-1]=temp;
}
}

10)数组查表

//eg:查找星期
class Array{
public static void main(String args[]){
String[] str ={"一","二","三"};//定义字符串数组

11)数组元素查找(查找指定元素第一次在数组中所在的位置)

int x = 5;
int[] arr = {1,2,3,4,5};
for(int i=0;i<ar.length;i++){
if(arr[i]==x){
System.out.println(i);
break;
}
}
点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Easter79 Easter79
2年前
Typescript 常见的几种函数重载方法详解与应用示例
所谓的重载,其实就是使用相同的函数名,传入不同数量的参数或不同类型的参数,以此创建出多个方法或产生不同结果。1\.最常见的,也就是根据定义傻瓜式地判断参数类型与数量functionshowPerson(name,...others){console.log(name,others)}
Wesley13 Wesley13
2年前
mysql中时间比较的实现
MySql中时间比较的实现unix\_timestamp()unix\_timestamp函数可以接受一个参数,也可以不使用参数。它的返回值是一个无符号的整数。不使用参数,它返回自1970年1月1日0时0分0秒到现在所经过的秒数,如果使用参数,参数的类型为时间类型或者时间类型的字符串表示,则是从1970010100:00:0
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
2年前
JS 对象数组Array 根据对象object key的值排序sort,很风骚哦
有个js对象数组varary\{id:1,name:"b"},{id:2,name:"b"}\需求是根据name或者id的值来排序,这里有个风骚的函数函数定义:function keysrt(key,desc) {  return function(a,b){    return desc ? ~~(ak
Stella981 Stella981
2年前
HIVE 时间操作函数
日期函数UNIX时间戳转日期函数: from\_unixtime语法:   from\_unixtime(bigint unixtime\, string format\)返回值: string说明: 转化UNIX时间戳(从19700101 00:00:00 UTC到指定时间的秒数)到当前时区的时间格式举例:hive   selec
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
2年前
Java面向对象
1\.方法    方法就是对java代码功能的封装。1.1方法定义的格式\访问修饰符\\关键字\static\\返回值类型方法名(\参数列表\){}forexample:    public static int add(int a,int