Java基础(四)方法和数组
一、方法
1、方法的定义
方法也叫函数,就是一个能独立完成某个功能的一段代码。方法可以看作一个整体。
语法:
修饰符 返回类型 方法名字(数据类型 变量名,数据类型 变量名,……[形式参数(0个到n个)]){
在方法的代码块区域返回结果值的语法: return 返回和方法返回类型相同的值;
}
注意:
1、方法的返回类型和方法名称必须定义。
2、在一个类中不能同时存在相同名称和参数类型个数一样的方法。(参数顺序可以不一样)
3、方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头写,不使用连接符。例如 addTicket();
优点:使程序变得更简短清晰。有利于维护。提高开发的效率。提高了代码的重用性。
2、修饰符
修饰符用来定义类、方法或者变量,通常放在语句的最前端。
1、访问修饰符 (4种)
private (私有化,范围最小): 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。
default (即缺省,什么也不写,默认的):在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
protected (继承相关): 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。
public (公共的,范围最大): 对所有类可见。使用对象:类、接口、变量、方法。
2、非访问修饰符
static 修饰符,用来修饰类方法和类变量。
- static 变量
static 静态变量,无论一个类实例化多少对象,它的静态变量只有一份拷贝。常和 final 结合一起来声明常量。
- static 方法
static 声明独立于对象的静态方法。静态方法不能使用类的非静态变量。
final 修饰符,用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。
- final 变量
注意:变量能被显式地初始化并且只能初始化一次。被声明为 final 的对象的引用不能指向不同的对象。但是 final 对象里的数据可以被改变。也就是说 final 对象的引用不能改变,但是里面的值可以改变。
- final 方法
类中的 final 方法可以被子类继承,但是不能被子类修改。声明 final 方法的主要目的是防止该方法的内容被修改。
- final 类
final 类不能被继承,没有类能够继承 final 类的任何特性。
abstract 修饰符,用来创建抽象类和抽象方法。
- abstract 抽象类
抽象类不能用来实例化对象,声明抽象类的唯一目的是为了将来对该类进行扩充。一个类不能同时被 abstract 和 final 修饰。如果一个类包含抽象方法,那么该类一定要声明为抽象类,否则将出现编译错误。
抽象类的使用场景: 一般作为父类(基类,模板类),模板方法模式。
- abstract 抽象方法
抽象方法是一种没有任何实现的方法,该方法的的具体实现由子类提供。抽象方法不能被声明成 final 和 static。任何继承抽象类的子类必须实现父类的所有抽象方法,除非该子类也是抽象类。
synchronized 和 volatile 修饰符,主要用于线程的编程。
- synchronized 关键字声明的方法同一时间只能被一个线程访问。synchronized 修饰符可以应用于四个访问修饰符。
- volatile 修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值。当成员变量发生变化时,会强制线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。
2、方法的调用
Java 支持两种调用方法的方式,根据方法是否有返回值来选择。
1、当方法返回一个值的时候,方法调用通常被当做一个值。
public class Test1 {
public static void main(String[] args) {
int sum = add(6, 6);
System.out.println(sum);
}
public static int add(int a, int b){
int sum = a + b;
return sum;
}
}
2、如果方法返回值是void,方法调用一定是一条语句。
System.out.println("move on");
3、方法的重载(overload)
方法重载:是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数列表(类型、个数、顺序)参数类型、参数个数、参数顺序、只要有一个不同。
如果一个类中存在了多个名字一样的方法而编译不报错,那么肯定就是重载
public class Overload {
/**
* 方法的重载,参数个数不同
* @param a
* @param b
*/
public static void add(int a, int b){
}
public static void add(int a, int b, int c){
}
public static void add(int a, int b, int c,int d){
}
}
二、数组
1、数组的定义
java数组是用来存储固定大小的同类型元素。相当于一个变量容器,存放多个数据
2、创建数组
1、动态创建数组
声明后立即赋值创建,还可以 先声明再赋值
语法格式:数据类型 [] 数组变量名 = new 数据类型[数组长度];
public class Test {
/**
* 动态创建数组
*/
@Test
public void testList(){
int[] list = new int[2]; //创建数组
list[0] = 1; //存放数据
list[1] = 2;
System.out.println(list.length);
}
}
2、静态创建数组
在创建数组的时候把已知的元素直接一次性放进去
语法格式:
- 数据类型 [] 数组变量名 = new 数据类型[] {多个以英文逗号分隔的数据};
- 数据类型 [] 数组变量名 = {多个以英文逗号分隔的数据};
public class Test1 {
/**
* 静态创建数组
*/
@Test
public void test1(){
int[] list1 = new int[]{1, 2};
int[] list2 = {3, 4, 5};
System.out.println(list1.length);
System.out.println(list2.length);
}
}
3、多维数组
多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组。
public class ArrayTest {
public static void main(String[] args) {
int[] a = {1, 2, 3};
int[] b = {4, 5, 6};
int[] c = {7, 8, 9};
int[][] arr = {a, b, c}; //创建二位数组
//遍历二维数组
for (int i = 0; i < arr.length; i++) {
int[] m = arr[i];
for (int j = 0; j < m.length; j++) {
System.out.print(m[j] + " ");
}
System.out.println();
/*输出结果:1 2 3
4 5 6
7 8 9 */
}
}
}
Java基础(四)方法和数组的更多相关文章
- Java基础(9)——数组
难点儿的已经过去啦,现在又开始基础了哈~ 之前讲变量的时候,变量是一个个的呀~,那我要搞一串变量该啷个办呢?Java给我们出了个好东西叫数组(*^▽^*) 数组呢,就是将变量一组一组的存起来,这个也是 ...
- Java基础(四) StringBuffer、StringBuilder原理浅析
StringBuilder与StringBuffer作用就是用来处理字符串,但String类本身也具备很多方法可以用来处理字符串,那么为什么还要引入这两个类呢? 关于String的讲解请看Java基础 ...
- Java基础——clone()方法浅析
一.clone的概念 clone顾名思义就是复制, 在Java语言中, clone方法被对象调用,所以会复制对象.所谓的复制对象,首先要分配一个和源对象同样大小的空间,在这个空间中创建一个新的对象.那 ...
- Java基础02 方法与数据成员
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在Java基础01 从HelloWorld到面向对象,我们初步了解了对象(obje ...
- JavaSE回顾及巩固的自学之路(四)——————方法和数组,面向对象
今天是2018.03.31,emmmmmm.好像距离上一次写Javase回顾总结已经好久好久过去,差一点就以为要停更了,哈哈哈. 其实呢,最近是真的好忙(额,这段时间觉得自己一直在学习) ...
- Java基础之方法详解
方法的所属性 在Java的语言中,方法相当于C语言中的函数,但是它与传统的函数也有着明确的不同:在结构化的语言中,函数是一等公民,整个程序是由一个个函数组成的:但是在面向对象的语言里,类是一等公民,整 ...
- 关于java基础_方法的简单习题
package day05; import java.util.Arrays; /** * 方法作业 * @author ASUS * */ public class Demo6 { /* * 1.定 ...
- Java基础教程——二维数组
二维数组 Java里的二维数组其实是数组的数组,即每个数组元素都是一个数组. 每个数组的长度不要求一致,但最好一致. // 同样有两种风格的定义方法 int[][] _arr21_推荐 = { { 1 ...
- Java基础进阶:学生管理系统数组方式分包源码实现,教师管理系统集合和数组两种方式源码实现,图书馆管理系统源码实现,现附重难点,代码实现源码,课堂笔记,课后扩展及答案
1.案例驱动模式 1.1案例驱动模式概述 (理解) 通过我们已掌握的知识点,先实现一个案例,然后找出这个案例中,存在的一些问题,在通过新知识点解决问题 1.2案例驱动模式的好处 (理解) 解决重复代码 ...
- Java基础语法Day_05(数组的概念)
第14节 数组 day05_01_数组的概念 day05_02_数组的定义格式一_动态初始化 day05_03_数组的定义格式二_静态初始化 day05_04_数组的定义格式三_省略的 ...
随机推荐
- OCP2018最新题库,052新题库及答案整理-25题
25.Which is true about logical and physical database structures? (Choose the best answer) A. An undo ...
- [转] 迁移 VMware 虚拟机到 KVM
迁移 VMware 虚拟机到 KVM 如何迁移 VMware 上的 Windows 及 Linux 虚拟机到基于 KVM 的虚拟机 目前 x86 平台上最流行的虚拟化软件是 VMware 公司的系列产 ...
- Ubuntu更新提示哈希和不匹配“Hash Sum mismatch”
Ubuntu更新提示哈希和不匹配"Hash Sum mismatch" 今天在常规更新软件的时候,我的ubuntu报了一个错误. 应该是ubuntu程序更新转交给另外一个更新造成 ...
- Spring AOP 杂谈
其实AOP的思想现在讲的已经很多了,本身没有什么难点,难的是AOP有自己的一套术语,而我们经常被这套术语搞晕.术语没招,只能理解背诵了,尽管背诵很讨厌,可大家都这么说,不知道,就会被说晕. AOP思想 ...
- 2016级算法第五次上机-F.ModricWang的水系法术
1066 ModricWang的水系法术 思路 比较典型的最大流问题,需要注意的是,题目已经暗示(明示)了这里的边是双向的,在建图的时候需要加上反向边的容量值. 解决最大流问题的基本思路就是不断在残量 ...
- stl容器学习——queue,stack,list与string
目录 头文件 string 目录部分 1.string的定义及初始化 ① 用一个字符串给另一个字符串赋值 ②用字符串常量对字符串进行赋值 ③ 用n个相同的字符对字符串赋值 2.string的运算符及比 ...
- [软件工程]项目选择与NABCD模型分析
项目 内容 这个作业属于哪个课程 2019春季计算机学院软件工程(罗杰) 这个作业的要求在哪里 团队项目选择 这课程的目标是 以实践形式熟悉软件开发流程,团队开发,合作学习 本次作业对课程的帮助是 确 ...
- 基础篇:6)形位公差标注(GD&T标准)-总章
本章目的:理解GD&T概念,读懂和绘制GD&T图纸.本章是GD&T指引章节. 1.GD&T概念 GD&T 是 Geometric Dimensioning ...
- C#集合之位数组
如果需要处理的数字有许多位,就可以使用BitArray类和BitVector32结构.BitArray类位于System.Collection,BitVector32结构位于System.Collec ...
- FreeRTOS-03中断测试
根据正点原子FreeRTOS视频整理 单片机:STM32F207VC FreeRTOS源码版本:v10.0.1 portDISABLE_INTERRUPTS(); /*关中断*/portENABLE_ ...