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)栈与堆的图示:

栈存函数名,函数名指向栈中相应数组首元素,堆存相应各元素



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;
}
}

JAVA自学笔记05的更多相关文章

  1. JS自学笔记05

    JS自学笔记05 1.例题 产生随机的16进制颜色 function getColor(){ var str="#"; var arr=["0","1 ...

  2. JAVA自学笔记09

    JAVA自学笔记09 1.子类的方法会把父类的同名方法覆盖(重写) 2.final: 1)可修饰类.方法.变量 2)修饰类时:此时该类变为最终类,它将无法成为父类而被继承 3)修饰方法时:该方法将无法 ...

  3. JAVA自学笔记06

    JAVA自学笔记06 1.二维数组 1)格式: ①数据类型[][]数组名 = new 数据类型[m][n]; 或 数据类型[]数组名[]=new 数据类型[m][n]; m表示这个二维数组有多少个一维 ...

  4. JAVA自学笔记04

    JAVA自学笔记04 1.switch语句 1)格式:switch(表达式){ case 值1: 语句体1; break; case 值2: 语句体2; break; - default: 语句体n+ ...

  5. JAVA自学笔记07

    JAVA自学笔记07 1.构造方法 1) 例如:Student s = new Student();//构造方法 System.out.println(s);// Student@e5bbd6 2)功 ...

  6. JAVA自学笔记10

    JAVA自学笔记10 1.形式参数与返回值 1)类名作为形式参数(基本类型.引用类型) 作形参必须是类的对象 2)抽象类名作形参 需要该抽象类的子类对象,通过多态实现 3)接口名为形参 需要的是该接口 ...

  7. JAVA自学笔记13

    JAVA自学笔记13 1.StringBuffer类 1)线程安全的可变字符序列 线程安全(即同步) 2)StringBuffer与String的区别:一个可变一个不可变 3)构造方法: ①publi ...

  8. JAVA自学笔记11

    JAVA自学笔记11 1:Eclipse的安装 2:用Eclipse写一个HelloWorld案例,最终在控制台输出你的名字 A:创建项目 B:在src目录下创建包.cn.itcast C:在cn.i ...

  9. JAVA自学笔记14

    JAVA自学笔记14 1.正则表达式 1)是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串.其实就是一种规则.有自己的特殊应用 2)组成规则: 规则字符在java.util.rege ...

随机推荐

  1. Android Studio运行项目报错:Error:null value in entry: annotationProcessorOutputFolder=null的解决方案

    一般是在Android studio异常退出(比如强制关机)后,重新打开后运行项目出现该问题. 解决方案 删除项目根目录的.gradle文件夹,然后Clean  Project —— Rebulid ...

  2. python多线程之t.setDaemon(True) 和 t.join()

    0.目录 1.参考2.结论    (1)通过 t.setDaemon(True) 将子线程设置为守护进程(默认False),主线程代码执行完毕后,python程序退出,无需理会守护子线程的状态.    ...

  3. HDU3718 Similarity KM

    原文链接http://www.cnblogs.com/zhouzhendong/p/8284763.html 题目传送门 - HDU3718 题意概括 直接描述输入吧 首先一个T(T<15),表 ...

  4. maven pom.xml(公司版)

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  5. Python编程基础[条件语句if 循环语句 for,while](二)

    ython条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. 可以通过下图来简单了解条件语句的执行过程: if 判断条件: 执行语句……else: 执行语句…… x= ...

  6. js里面的判断最好做到完全控制

    <li class="item"> <div id="zcdz" name="zcdz" class="mini ...

  7. P3150 pb的游戏(1)

    P3150 pb的游戏(1)选偶数,这一轮一定会活,选奇数,自己这一轮可能会死,并且(如果自己这一轮没死)下一轮对手一定可以活,因为选了奇数,就会被分解成奇数和偶数. #include<iost ...

  8. Ef 自动迁移,日志

    Ef 迁移 在vs打开程序控制台 2,选择程序集 ,如果是初次,输入 Enable-Migrations,启动迁徙 3  添加迁移,完成修改 4,之后会自动生成迁移配置文件. 然后再上下文类中加入 两 ...

  9. 001.Kubernetes简介

    一 Kubernetes概述 Kubernetes是一个全新的基于容器技术的分布式架构领先方案.Kubernetes(k8s)是Google开源的容器集群管理系统(谷歌内部:Borg).在Docker ...

  10. 从输入 URL 到页面加载完成的过程详解---【XUEBIG】

    从输入 URL 到页面加载完成的过程中都发生了什么事情? 这是一道经典的面试题,涉及面非常广,要答出来并不困难,当要将问题回答好却不是那么容易 过程概述 浏览器查找域名对应的 IP 地址: 浏览器根据 ...