查看: 1711|回复: 0

[Java代码] Java基础(四)

发表于 2018-3-3 12:06:05
一、方法 1、方法的定义

  方法也叫函数,就是一个能独立完成某个功能的一段代码。方法可以看作一个整体。

语法:

  1. 修饰符 返回类型 方法名字(数据类型 变量名,数据类型 变量名,……[形式参数(0个到n个)]){
  2. 在方法的代码块区域返回结果值的语法: return 返回和方法返回类型相同的值;
  3. }
复制代码

注意:

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。任何继承抽象类的子类必须实现父类的所有抽象方法,除非该子类也是抽象类。

synchronizedvolatile 修饰符,主要用于线程的编程。

  • synchronized 关键字声明的方法同一时间只能被一个线程访问。synchronized 修饰符可以应用于四个访问修饰符。
  • volatile 修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值。当成员变量发生变化时,会强制线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。
2、方法的调用

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

  1、当方法返回一个值的时候,方法调用通常被当做一个值。

  1. 1 public class Test1 {
  2. 2 public static void main(String[] args) {
  3. 3 int sum = add(6, 6);
  4. 4 System.out.println(sum);
  5. 5 }
  6. 6
  7. 7 public static int add(int a, int b){
  8. 8 int sum = a + b;
  9. 9 return sum;
  10. 10 }
  11. 11 }
复制代码

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

  1. 1 System.out.println("move on");
复制代码
3、方法的重载(overload)

  方法重载:是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数列表(类型、个数、顺序)参数类型、参数个数,参数顺序、只要有一个不同。

  如果一个类中存在了多个名字一样的方法而编译不报错,那么肯定就是重载

  1. 1 public class Overload {
  2. 2 /**
  3. 3 * 方法的重载,参数个数不同
  4. 4 * @param a
  5. 5 * @param b
  6. 6 */
  7. 7 public static void add(int a, int b){
  8. 8
  9. 9 }
  10. 10
  11. 11 public static void add(int a, int b, int c){
  12. 12
  13. 13 }
  14. 14
  15. 15 public static void add(int a, int b, int c,int d){
  16. 16
  17. 17 }
  18. 18 }
复制代码
二、数组 1、数组的定义

  java数组是用来存储固定大小的同类型元素。相当于一个变量容器,存放多个数据

2、创建数组 1、动态创建数组

  声明后立即赋值创建,还可以 先声明再赋值

语法格式:数据类型 [] 数组变量名 = new 数据类型[数组长度];

  1. 1 public class Test {
  2. 2 /**
  3. 3 * 动态创建数组
  4. 4 */
  5. 5 @Test
  6. 6 public void testList(){
  7. 7 int[] list = new int[2]; //创建数组
  8. 8 list[0] = 1; //存放数据
  9. 9 list[1] = 2;
  10. 10
  11. 11 System.out.println(list.length);
  12. 12 }
  13. 13 }
复制代码
2、静态创建数组

  在创建数组的时候把已知的元素直接一次性放进去

语法格式:

  • 数据类型 [] 数组变量名 = new 数据类型[] {多个以英文逗号分隔的数据};
  • 数据类型 [] 数组变量名 = {多个以英文逗号分隔的数据};
  1. 1 public class Test1 {
  2. 2 /**
  3. 3 * 静态创建数组
  4. 4 */
  5. 5 @Test
  6. 6 public void test1(){
  7. 7 int[] list1 = new int[]{1, 2};
  8. 8 int[] list2 = {3, 4, 5};
  9. 9 System.out.println(list1.length);
  10. 10 System.out.println(list2.length);
  11. 11 }
  12. 12 }
复制代码
3、多维数组

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

  1. 1 public class ArrayTest {
  2. 2
  3. 3 public static void main(String[] args) {
  4. 4 int[] a = {1, 2, 3};
  5. 5 int[] b = {4, 5, 6};
  6. 6 int[] c = {7, 8, 9};
  7. 7
  8. 8 int[][] arr = {a, b, c}; //创建二位数组
  9. 9
  10. 10 //遍历二维数组
  11. 11 for (int i = 0; i < arr.length; i++) {
  12. 12 int[] m = arr[i];
  13. 13 for (int j = 0; j < m.length; j++) {
  14. 14 System.out.print(m[j] + " ");
  15. 15 }
  16. 16 System.out.println();
  17. 17 /*输出结果:1 2 3
  18. 18 4 5 6
  19. 19 7 8 9 */
  20. 20 }
  21. 21 }
  22. 22 }
复制代码



回复

使用道具 举报