java 基础

 

关于标识符

标识符:指程序中,我们自己定义的内容,比如类的名字、方法名字和变量的名字等。

命令规则:硬性要求

  • 可以包含英文字母(区分大小写)、0-9数字、$和_
  • 不能以数字开头
  • 不能是关键字

命令规范 软性建议

  • 类名规范:首字母大写,后面每个单词首写字母大写
  • 变量名规范:首字母小写,后面每个单词首字母大写
  • 方法名规范:桶变量名

方法重载:

  • 参数个数不同
  • 参数类型不同
  • 参数的类型顺序不同

 数组

标准格式:
数据类型[] 数组名称 = new 数据类型[] {元素1,元素2,...};
省略格式:
数据类型[] 数组名称 = {元素1,元素2,...};

 

 1 /*
 2 使用静态初始化数组的时候,格式还可以省略一下,
 3 标准格式:
 4 数据类型[] 数组名称=new 数据类型[]{元素1,元素2.。。};
 5 
 6 省略格式:
 7 数据类型[] 数组名称={元素1,元素2.。。};
 8 
 9 注意事项:
10 1、静态初始化没有直接指定长度,但是仍然会自动推算得到长度。
11 2、静态初始化标准格式可以拆分成为两个步骤。
12 3、动态初始化也可以拆分成为两个步骤。
13 4、静态初始化一旦使用省略格式,就不能拆分成为两个步骤了。
14 
15 使用建议:
16 如果不确定数组当中的具体内容,用动态初始化;否则,已经确定了具体的内容,用静态初始化。
17 
18 直接打印数组名称,得到的是数组对应的内存地址哈希值。
19 访问数组的格式:数组名称[索引值]
20 索引值:就是一个int数字,代表数组当中元素的编号。
21 【注意】索引值从0开始,一直到“数组的长度-1”为止。
22 
23 使用动态初始化数组的时候,其中的元素将会自动填充值,规则如下:
24 如果是整数类型,那么默认是0
25 如果是浮点类型,默认是0.0
26 如果是字符型,默认是'\u0000'
27 如果是布尔类型,默认是false
28 如果是引用类型,默认是null
29 
30 注意事项:
31 静态初始化其实也有默认值的过程,只不过系统马上将默认值替换成了大括号中的具体数值。
32  */
33 public class ArrayTest{
34     public static void main(String[] args){
35         //省略格式的静态初始化
36         int[] arrayA = new int[] {5,6,7,8,29};
37 
38         //静态格式化的标准格式,可以拆分成两个步骤
39         int[] arrayB;
40         arrayB = new int[]{1,2,3};
41 
42         //动态初始化也可以拆分成两个步骤
43         int[] arrayC;
44         arrayC = new int[5];
45 
46         //静态初始化的省略格式,不能拆分成两个步骤
47         // int[] arrayD;
48         // arrayD = {1,2,3};
49 
50         System.out.println(arrayA);
51 
52 
53         boolean[] array = new boolean[3];
54         System.out.println(array[0]);
55 
56     }
57 }

 

一个数组 

两个不同数组

 

 指向同一个数组

 

一个对象

两个对象使用同一个方法的地址

 

两个对象指向相同地址

 对象类型作为方法的参数

 对象类型作为返回值

 

 1 /**
 2  * 局部变量和成员变量
 3  * 1、定义的位置不一样【重点】
 4  * 局部变量:在方法内部
 5  * 成员变量:在方法的外部,直接写在类当中
 6  * 
 7  * 2、作用范围不一样【重点】
 8  * 局部变量:只有方法当中才可以使用,出了方法就不能使用
 9  * 成员变量:整个类全都可以使用
10  * 
11  * 3、默认值不一样【重点】
12  * 局部变量:没有默认值
13  * 成员变量:有默认值
14  * 
15  * 4、内存的位置不一样
16  * 局部变量:位于栈内存
17  * 成员变量:位于堆内存
18  * 
19  * 5、生命周期不一样
20  * 局部变量:随着方法进栈而诞生,随着方法出栈而消失
21  * 成员变量:随着对象创建而诞生,随着对象被垃圾回收而消失
22  */
23 public class VariableDiff{
24     String name;//成员变量
25 
26     public void methodA(){
27         int num = 20;//局部变量
28         System.out.println(num);
29         System.out.println(name);
30     }
31 
32     public void methodB(int param){//方法的参数是局部变量
33         //参数在方法调用的时候,必须会被赋值的
34         System.out.println(param);
35     }
36 }

 封装:

 1 /**
 2  * 面向对象三大特征:封装、继承、多态
 3  * 
 4  * 封装性在java当中的体现:
 5  * 1、方法就是一种封装
 6  * 2、关键字private也是一种封装
 7  * 
 8  * 封装就是将一些细节信息隐藏起来,对于外界不可见
 9  */
10 
11  public class Method{
12      public static void main(String[] args){
13          int[] array = {1,2,35,3,9};
14          int max = getMax(array);
15          System.out.println(max);
16      }
17 
18      public static int getMax(int[] array){
19          int max = array[0];
20          for (int i = 0; i < array.length; i++) {
21              if(array[i] > max){
22                  max = array[i];
23              }
24          }
25          return max;
26      }
27  }
View Code

 

 1 /**
 2  * 
 3  * 一旦使用了private进行修饰,那么本类当中仍然可以随意访问。
 4  * 但是,超出了本类范围之外就不能再直接访问了。
 5  * 
 6  * 间接访问private成员变量,就是定义一对儿Getter/Setter方法
 7  * 
 8  * 必须叫setXxx或者getX命名规则。
 9  * 对于Getter来说,不能有参数,返回值类型和成员变量对应;
10  * 对于Setter来说,不能有返回值,参数类型和成员变量对应。
11  * 
12  * 对于基本类型当中的boolean值,Getter方法一定要写成isXxx的形式,而setXxx规则不变。
13  * 
14  * 当方法的局部变量和类的成员变量重名的时候,根据“就近原则”,优先使用局部变量。
15  * 如果需要访问本类当中的成员变量,那么使用格式:this.成员变量
16  */
17 
18  public class Person{
19      String name;//姓名
20      private int age;//年龄
21      private boolean male;
22 
23      public void show(){
24          System.out.println("姓名:"+name+",年龄:"+age);
25      }
26 
27      //参数name是对方的名字
28      //成员变量name是自己的名字
29      public void sayHelo(String name){
30          System.out.println(name + ",你好,我是" + this.name);
31      }
32      public void setAge(int num){
33          if(num <= 100 && num >0){
34              age = num;
35          }else{
36             System.out.println("数据不对");
37          }
38      }
39 
40      public int getAge(){
41          return age;
42      }
43 
44      public void setMale(boolean b){
45          male = b;
46      }
47 
48      public boolean isMale(){
49          return male;
50      }
51  }

 

一个标准的类通常由下面四个部分组成:
1、所有的成员变量都要使用private关键字修饰
2、为每一个成员变量编写一对Getter/Setter方法
3、编写一个全无参数的构造方法
4、编写一个全参数的构造方法
这个标准的类就叫Java Bean

 

Java jdk api中的Scanner使用
 1 import java.util.Scanner;
 2 /***
 3  * Scanner类的功能,可以实现键盘输入数据,到程序当中
 4  * 
 5  * 引用类型的一般步骤:
 6  * 
 7  * 1、导包
 8  * import 包路径.类名称;
 9  * 如果需要使用的目标类,和当前类位于同一个包下,则可以省略导包语句。
10  * 只有java.lang包下面的内容不需要导包,其他的包都需要import语句
11  * 
12  * 2、创建
13  * 类名称 对象名 = new 类名称();
14  * 
15  * 3、使用
16  * 对象名.成员方法名()
17  */
18 
19  public class ScannerTest{
20      public static void main(String[] args){
21         Scanner sc = new Scanner(System.in);
22 
23         System.out.println("请输入一个数字:");
24         int num = sc.nextInt();
25         System.out.println("输入的int数字是:"+num);
26 
27         String str = sc.next();
28         System.out.println("输入的字符是:" + str);
29 
30      }
31  }

 匿名对象的使用:

 1 import java.util.Scanner;
 2 /**
 3  * 创建对象的标准格式:
 4  * 类名称 对象名 = new 类名称();
 5  * 
 6  * 匿名对象就是只有右边的对象,没有左边的名字和赋值运算符。
 7  * new 类名称();
 8  */
 9 public class Anonymous{
10     public static void main(String[] args){
11         // //普通使用方式
12         // Scanner sc = new Scanner(System.in);
13         // int num = sc.nextInt();
14 
15         // System.out.println(num);
16 
17         // //匿名对象的方式
18         // int num2 = new Scanner(System.in).nextInt();
19         // System.out.println(num2);
20 
21 
22         // //使用一般写法传入参数
23         // Scanner sc = new Scanner(System.in);
24         // methodParam(sc);
25 
26         // //使用匿名对象来进行传参
27         // methodParam(new Scanner(System.in));
28 
29         Scanner sc = methodReturn();
30         int num = sc.nextInt();
31         System.out.println("输入的是:" + num);
32     }
33 
34     public static void methodParam(Scanner sc){
35         int num = sc.nextInt();
36         System.out.println("输入的是:"+ num);
37     }
38 
39     public static Scanner methodReturn(){
40         return new Scanner(System.in);
41     }
42 }

 ArrayList基本使用

 1 /**
 2  * 数组的长度不可以改变。
 3  * 但是ArrayList集合的长度是可以随意变化的。
 4  * 
 5  * 对于ArrayList来说,有一个尖括号<E>代表泛型。
 6  * 泛型:也就是装在集合中的所有的元算全部是同一种类型。
 7  * 注意:泛型只能是引用类型,不能是基本类型。
 8  * 
 9  * 注意事项:
10  * 对于ArrayList集合来说,直接打印得到的不是地址值,而是内容。
11  * 如果内容是空,得到的是空的中括号:[]
12  * 
13  * 如果希望向集合ArrayList当中存储基本类型数据,必须使用基本类型对应的“包装类”
14  * 
15  * 基本类型     包装类(引用类型包装类都位于java.lang包下)
16  * byte         Byte
17  * short        Short
18  * int          Integer
19  * long         Long
20  * float        Float
21  * double       Double
22  * char         Character
23  * boolean      Boolean
24  * 
25  * ArrayList的常用方法:
26  * public boolean add(E e);向集合当中添加元素,参数的类型和泛型一致。返回值代表添加是否成功。
27  * 备注:对于ArrayLit集合来说,add添加动作一定是成功的,所以返回值可用可不用
28  * 但是对于其他集合的add,不一定成功
29  * public E get(int index);从集合中获取元素,参数是索引编号,返回值是对应位置的元素。
30  * public E remove(int index);从集合中删除元素,参数是索引编号,返回值是被删除的元素。
31  * public int size();获取集合的尺寸长度,返回值是集合中包含的元素个数。
32  */
33 import java.util.ArrayList;
34 public class DemoArrayList{
35     public static void main(String[] args){
36         //创建一个ArrayList集合
37         //备注:从JDK1.7+开始,右侧的尖括号可以不写内容,但是,尖括号不能省略
38 
39         ArrayList<String> list = new ArrayList<>();
40         //System.out.println(list);
41 
42         //向集合中添加数据
43         list.add("张");
44         list.add("我");
45         System.out.println(list);
46 
47         list.add("一");
48         String val = list.get(2);
49         System.out.println(val);
50 
51         //从集合中删除
52         String rm = list.remove(2);
53         System.out.println(rm);
54 
55         System.out.println(list);
56 
57         int size = list.size();
58         System.out.println(size);
59     }
60 }

 



posted @ 2019-08-17 10:33  mantishell  阅读(173)  评论(0编辑  收藏  举报