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