zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    Android应用性能优化
    打造高质量Android应用:Android开发必知的50个诀窍
    毕向东day23--java基础-网络总结
    《编写高质量代码:改善Java程序的151个建议》
    最新java数组的详解
    主线程中一定不能放耗时操作,必须要开子线程,比如下载文件,不然会不让你拿到输入流--报错显示android.os.NetworkOnMainThreadException
    《Head First设计模式(中文版)》
    码表由来:ascll码-Gbk2312-GBK-Unicode-UTF-8
    《Java程序性能优化:让你的Java程序更快、更稳定》
    LeetCode 147. 对链表进行插入排序
  • 原文地址:https://www.cnblogs.com/wyb666/p/10285463.html
Copyright © 2011-2022 走看看