Java基础回顾

内容:

1、Java中的数据类型

2、引用类型的使用

3、IO流及读写文件

4、对象的内存图

5、this的作用及本质

6、匿名对象

1、Java中的数据类型

Java中的数据类型有如下两种:

  • 基本数据类型: 4类8种   byte(1) boolean(1) short(2) char(2) int(4) float(4) long(8) double(8)    注:括号内指某类型是几字节的
  • 引用数据类型:String、数组、集合(ArrayList) 、Scanner、自定义类型

基本数据类型和引用数据类型的区别:

  • 基本数据类型:声明时直接在栈内存中开辟空间并直接在当前内存中存放数据,赋值时传递的是传值的
  • 引用数据类型:声明时会将实际的数据存放在堆内存中,同时在栈内存中存放着在堆内存中的首地址,赋值时传递的是引用的

2、引用类型的使用

(1)String

String的API:

 1 引用类型String中的方法(4532)
 2 第一组: 判断方法
 3           boolean equals(String str);            // 比较两个字符串的内容是否相等
 4           boolean equalsIgnoreCase(String str);     // 比较两个字符串的内容是否相等(忽略大小写)
 5           boolean startsWith(String subStr);       // 判断某个字符串是否以指定的子串开头
 6           boolean endsWith(String subStr):        // 判断某个字符串是否以指定的子串结尾
 7  
 8 第二组: 获取方法
 9           int length();                           // 获取字符串中字符个数
10           char charAt(int index);                      // 谋取字符串某一个字符(指定下标)
11           String subString(int startIndex);              // 从指定下标开始截取字符串,直到字符串末尾
12           String subString(int startIndex, int endIndex);     // 从指定下标开始截取字符串,到指定下标结束(左闭右开)
13           int indexOf(String subStr);                    // 获取子串第一次出现的下标
14   
15 第三组: 转换方法
16           String toLowerCase();    // 转成小写串
17           String toUpperCase();    // 转成大写串
18           Char[] toCharArray();    // 变成字符数组
19   
20 第四组: 其他方法
21           String trim();                     // 去掉字符串两端的空格
22           String[] split(String str);        // 切割字符串

使用代码如下:

 1 // String的API使用
 2 public class code2_useString {
 3     public static void main(String[] args) {
 4         String s1 = "ABC", s2 = "ABC", s3 = "abc";
 5         // equals equalsIgnoreCase
 6         System.out.println(s1.equals(s2) + " " + s1.equals(s3) + " "
 7                 + s1.equalsIgnoreCase(s3));
 8         // startsWith endsWith
 9         System.out.println(s1.startsWith("A") + " " + s1.endsWith("BC"));
10         System.out.println(s3.startsWith("A") + " " + s3.endsWith("BC"));
11         // length
12         System.out.println(s1.length());
13         // charAt
14         for (int i = 0; i < s1.length(); i++) {
15             if (i != s1.length() - 1) {
16                 System.out.print(s1.charAt(i) + "-");
17             } else{
18                 System.out.print(s1.charAt(i));
19             }    
20         }
21         System.out.println();
22         // subString
23         System.out.println(s1.substring(0));
24         System.out.println(s1.substring(0, 1));
25         System.out.println(s1.substring(1, 2));
26         // indexOf
27         System.out.println(s1.indexOf("BC"));
28         System.out.println(s1.indexOf("不存在"));
29         // toLowerCase toUpperCase toCharArray
30         System.out.println(s1.toLowerCase());
31         System.out.println(s3.toUpperCase());
32         char[] chas = s1.toCharArray();
33         // trim split
34         String str = "abc test 666";
35         System.out.println(str.trim());
36         String[] strs = str.split(" ");
37         for(int i=0;i<strs.length;i++){
38             System.out.print(strs[i] + " ");
39         }
40         System.out.println();
41     }
42 }

(2)数组

 1 // Java数组使用
 2 public class code3_useArray {
 3     // print all elements of array 
 4     public static void printArray(int[] arr) {
 5         if (arr == null) {
 6             return;
 7         }
 8         for (int i = 0; i < arr.length; i++) {
 9             System.out.print(arr[i] + " ");
10         }
11         System.out.println();
12     }
13     
14     // find the max value in arr 
15     public static int findMax(int[] arr){
16         int max = Integer.MIN_VALUE;
17         for(int i=0;i<arr.length;i++){
18             max = Math.max(max, arr[i]);
19         }
20         return max;
21     }
22     
23     // find the min value in arr
24     public static int findMin(int[] arr){
25         int min = Integer.MAX_VALUE;
26         for(int i=0;i<arr.length;i++){
27             min = Math.min(min, arr[i]);
28         }
29         return min;
30     }
31     
32     public static void main(String[] args) {
33         // 声明数组并初始化(如果声明的时候不初始化默认每个位置初始化为0)
34         int[] arr = { 1, 2, 3, 4, 5 };
35         // length
36         System.out.println(arr.length);
37         // 遍历数组
38         printArray(arr);
39         // 访问数组值
40         System.out.println(arr[0] + "-" + arr[1] + "-" + arr[2]);
41         // 找到数组最大值和最小值
42         System.out.println(findMax(arr));
43         System.out.println(findMin(arr));
44     }
45 }

(3)集合(ArrayList)(动态数组)

 1 // ArrayList使用
 2 public class code4_useArrayList {
 3     public static void main(String[] args) {
 4         // 创建ArrayList
 5         ArrayList list = new ArrayList();
 6 
 7         // 添加元素
 8         list.add("1");
 9         list.add("2");
10         list.add("3");
11         list.add("4");
12         // 将下面的元素添加到第1个位置
13         list.add(0, "5");
14 
15         // 获取第一个元素
16         System.out.println("the first element is: " + list.get(0));
17 
18         // 删除"3"
19         list.remove("3");
20 
21         // 获取大小
22         System.out.println("Arraylist size=: " + list.size());
23 
24         // 判断包含
25         System.out.println("ArrayList contains 3 is: " + list.contains("3"));
26 
27         // 设置第二个元素为10
28         list.set(1, "10");
29 
30         // 遍历ArrayList
31         for (Iterator iter = list.iterator(); iter.hasNext();) {
32             System.out.println("next is: " + iter.next());
33         }
34 
35         // 将ArrayList转换成数组
36         String[] arr = (String[]) list.toArray(new String[0]);
37         for (int i = 0; i < arr.length; i++) {
38             String str = arr[i];
39             System.out.println("str: " + str);
40         }
41 
42         // 清空ArrayList
43         list.clear();
44         // 判空
45         System.out.println("ArrayList is empty: " + list.isEmpty());
46     }
47 }

(4)Scanner(输入)

 1 // Scanner使用
 2 /*
 3     next():只读取输入直到空格。它不能读两个由空格或符号隔开的单词。
 4     此外,next()在读取输入后将光标放在同一行中。(next()只读空格之前的数据,并且光标指向本行)
 5 
 6     nextLine():读取输入,包括单词之间的空格和除回车以外的所有符号(即。它读到行尾)。
 7     读取输入后,nextLine()将光标定位在下一行。
 8  
 9  * */
10 public class code5_useScanner {
11     public static void main(String[] args) {
12         Scanner input = new Scanner(System.in);
13         System.out.println("a.请输入一个字符串(中间能加空格或符号)");
14         String a = input.nextLine();
15         
16         System.out.println("b.请输入一个字符串(中间不能加空格或符号)");
17         String b = input.next();
18         
19         System.out.println("c.请输入一个整数");
20         int c;
21         c = input.nextInt();
22         
23         System.out.println("d.请输入一个double类型的小数");
24         double d = input.nextDouble();
25         
26         System.out.println("e.请输入一个float类型的小数");
27         float e = input.nextFloat();
28         System.out.println("按顺序输出abcde的值:");
29         System.out.println(a);
30         System.out.println(b);
31         System.out.println(c);
32         System.out.println(d);
33         System.out.println(e);
34     }
35 }

3、IO流及读写文件

(1)什么是输入输出流

  • 输出流: 数据从Java程序到文件中
  • 输入流: 数据从文件到Java程序中

(2)FileWriter和FileReader

  • FileWriter:文件的字符输出流,写数据(字符、字符串、字符数组)
  • FileReader:文件的字符输入流,读数据(字符、字符数组)

两者API如下:

 1 FileWriter:
 2   write(int ch);                   // 写一个字符(可以写字符的ASCII码值)
 3   write(char[] chs);                 // 写一个字符数组
 4   write(String s);                  // 写一个字符串
 5   write(char[] chs,int startIndex,int len);   // 写一个字符数组的一部分
 6   write(String s,int startInex,int len);     // 写一个字符串的一部分
 7 
 8 FileReader:
 9   int read();          // 读取一个字符
10   int read(char[] chs);    // 一个读取一个字符数组,返回值表示实际读取到的字符的个数

(3)文件路径

  • 相对路径:相对于当前工程或当前项目
  • 绝对路径 :在计算机上的绝对位置(以盘符开头)

4、对象的内存图

(1)Java内存分类 

  • 栈stack:存基本数据类型和引用
  • 堆heap:存对象(new出来的)
  • 方法区:加载字节码文件(.class文件)
  • 本地方法区:Java调用操作系统功能
  • 寄存器区:Java操作CPU
  • 注:上述区域中本地方法区和寄存器区基本上平时用不到

(2)Java内存示意图

5、this的作用及本质

  • 作用:区分局部变量和成员变量的同名的情况(一般this.xxx就是指成员变量,没有this修饰的一般是局部变量)
  • 本质:this代表一个对象,具体是哪一个对象,那么由方法的调用者决定

6、匿名对象

(1)什么是匿名对象

匿名对象:指没有名字的对象

语法上:只创建对象,而不是变量来接收

比如:new Dog(); new Student();

(2)匿名对象的使用

  • 匿名对象也是一个对象,具有对象的所有功能
  • 一个匿名对象只能使用一次,第二次使用就是一个新的匿名对象
 1 public class Person{
 2     public void eat(){
 3         System.out.println();
 4     }
 5 }
 6 
 7 // 创建一个普通对象
 8 Person p = new Person();
 9 // 创建一个匿名对象
10 new Person();

(3)匿名对象的特点

  • 创建匿名对象直接使用,没有变量名:new Person().eat()
  • 匿名对象在没有指定其引用变量时,只能使用一次
  • 匿名对象可以作为方法接收的参数、方法返回值使用
 1 class Demo {
 2     publicstatic Person getPerson(){
 3         //普通方式
 4         //Person p = new Person();    
 5         //return p;
 6         
 7         //匿名对象作为方法返回值
 8         returnnew Person(); 
 9     }
10     
11     publicstaticvoid method(Person p){}
12 }
13 
14 class Test {
15     publicstaticvoid main(String[] args) {
16         //调用getPerson方法,得到一个Person对象
17         Person person = Demo.getPerson();
18         
19         //调用method方法
20         Demo.method(person);
21         //匿名对象作为方法接收的参数
22         Demo.method(new Person());
23     }
24 }
原文地址:https://www.cnblogs.com/wyb666/p/10285463.html