zoukankan      html  css  js  c++  java
  • 20145109 《Java程序设计》第三周学习总结

    20145109 《Java程序设计》第三周学习总结

    教材学习内容总结

    Chapter 4 Object

    4.1 Class & Object

    definition of class:

    class Clothes {
    	String color;
    	char size;	
    	//color & size are called field member
    }
    

    foundation of an instance:

    new Clothes();
    

    reference:

    Clothes c1 = new Clothes();
    

    Constructor:

    class Clothes {
    	String color;
    	char size;	
    	
        Clothes2(String color, char size) {
    	    this.color = color;
        	this.size = size;	
        }
    }
    

    java.util.Scanner:

    import  java.util.Scanner;
    
    public class Guess {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            int number = (int) (Math.random() * 10);
            int guess;
    
            do {
                System.out.print("猜数字(0~9):");
                guess = scanner.nextInt();
            } while (guess != number);
    
            System.out.println("猜中了");
        }
    }
    

    Aside from nextInt(), there're other methods like: nextByte(), nextShort(), nextLong(), nextFloat(), nextDouble(), nextBoolean(), nextLine()

    java.math.BigDecimal:

    
    import java.math.BigDecimal;
    
    public class DecimalDemo {
        public static void main(String[] args) {
            BigDecimal operand1 = new BigDecimal("1.0");
            BigDecimal operand2 = new BigDecimal("0.8");
            BigDecimal result = operand1.subtract(operand2);
            System.out.println(result);
        }
    }
    

    +, -, *, / -> plus(), substract(), multiply(), divide()

    equals(): judge equation

    equation & same:

    '==': the same object
    '.equals()': value equation

    4.2 Basic Type of Wrapper

    Long, Integer, Double, Float, Boolean

    public class IntegerDemo {
        public static void main(String[] args) {
            int data1 = 10;
            int data2 = 20;
            Integer wrapper1 = new Integer(data1);
            Integer wrapper2 = new Integer(data2);
            System.out.println(wrapper1.doubleValue()/3);
            System.out.println(wrapper1.compareTo(wrapper2));
        }
    }
    

    Autoboxing & Auto unboxing

    Integer wrapper = 10;
    int foo = wrapper;
    

    4.3 Array, an Object

    public class Array_XY {
        public static void main(String[] args) {
            int[][] cords = {
                    {1, 2, 3},
                    {4, 5, 6}
            };
    
            for (int x = 0; x < cords.length; x++) {
                for (int y = 0; y < cords[x].length; y++) {
                    System.out.printf("%2d", cords[x][y]);
                }
                System.out.println();
            }
    
            /* enhanced for loop:
                for (int[] row : cords) {
                    for (int value : row) {
                        System.out.printf("%2d", value);
                    }
                    System.out.println();
                }
            */
    
        }
    }
    

    operating arrays

    int[] scores = new int[10];
    
    //or
    int[] scores = new int[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    

    import java.util.Arrays:

    Arrays.fill(arrayName, value);
    

    irrgular array

    int[][] arr = new int[2][];
    arr[0] = new int[] {1, 2, 3, 4, 5};
    arr[1] = new int[] {1, 2, 3};
    

    class-type array

    Integer[] scores = new Integer[3];
    

    This sentence build none object, because every index is refered to null.

    array copy

    int[] scores1 = {...}
    int[] scores2 = new int[scores1.length];
    for (int i = 0; i < scores1.length; i++) {
    	scores2[i] = scores1[i];
    }
    

    int[] scores1 = {...}
    int[] scores2 = new int[scores1.length];
    System.arraycopy(scores1, 0, scores2, 0, scores1.length);
    

    import java.util.Arrays

    int[] scores1 = {...}
    int[] scores2 = Arrays.copyOf(scores1, scores1.length);
    

    In Java, once an array is set up, the length is fixed. The only way to change it is to build another array.

    int[] scores2 = Arrays.copyOf(scores1, scores1.length * 2);
    

    deep copy & shallow copy

    No matter System.arraycopy() or Arrays.copyOf(), they are all shallow copy. When to copy the object, you must operate yourself.

    Clothes2[] c1 = {new Clothes2("red", 'L'), new Clothes2("blue", 'M')};
    Clothes2[] c2 = new Clothes2[c1.length];
    
    for (int i = 0; i < c1.length; i++) {
    	Clothes2 c = new Clothes(c1[i].color, c1[i].size);
    	c2[i] = c;
    }
    

    4.4 String, an Object

    String name = "justin";
    System.out.println(name);
    System.out.println(name.length());
    System.out.println(name.charAt(0));
    System.out.println(name.toUpperCase());
    
    char[] cs = {'j', 'u', 's', 't', 'i', 'n'};
    String name = new String(cs);
    
    char[] cs2 = name.toCharArray();
    
    System.out.println("your name is: " + name);
    

    String to number:

    Integer.parseInt(...)
    Double.parseDouble(...)
    ...
    

    String Characteristic :

    1. String constant & String pool
    2. Immutable String

    String literal & String pool

    char[] name = {'J', 'u', 's', 't', 'i', 'n'};
    String name1 = new String(name);
    String name2 = new String(name);
    System.out.println(name1 == name2);
    

    Abviously, the ansewer is 'false'.
    What about the following slice?

    String name1 = "Justin";
    String name2 = "Justin";
    System.out.println(name1 == name2);
    

    Unexpectedly, the answer is 'true'.

    In Java, Strings written by "" are set up only once if the content is the same, maintaining in String pool.

    However, "new" is surely to set up a new object.

    String name3 = new String("Justin");
    String name4 = new String("Justin");
    System.out.println(name3 == name4);
    

    Its answer is 'false'. To compare two Strings with same content, use .equals().

    Immutable String

    String name2 = name1 + "World";
    

    decompile:

    String s1 = (new StringBuilder()).append(s).append("World").toString();
    

    Text file encoding

    Java supports Unicode.

    Java API

    I really really want to follow the steps in the book, BUT the network is too slow to open the page! Whatever, it's easy to search any API, if you can access high-speed Internet.

    Chapter 5 Encapsulation

    Encapsulation aims to hide details of objects. We use 'private' to keep members from outside. 'get+ObjectName' is a method to get members' value.

    Members without declaration of jurisdiction can only be accessed in the same package. If you want to access it in another package's program, 'public' declaration is necessary.

    Overload

    class Other {
        {
            System.out.println("Initial");
        }
    
        Other() {
            System.out.println("Other() Constructor");
        }
    
        Other(int o) {
            this();
            System.out.println("Other(int o) Constructor");
        }
    }
    

    Tip : 'this()' can only appear in the first line of Constructor

    'final' keyword

    final int x;
    

    There isn't '=', so x delays value appoint. But its constructor must appoint its value, otherwise compile fails.

    'static'

    Members declared with 'static' belong to class other than object.

    class Ball {
    	double radius;
    	static final double PI = 3.1415926;
    	static double toRadians(double angdeg) {
    		return angdeg * (Ball.PI / 180);
    	}
    }
    
    System.out.println(Ball.toRadians(100));
    

    ClassName + '.' + static_members(or method)

    Tip : static members belong to class, so it is a mistake to use 'this' in static members. Also, it can't include object's member, and non-static methods or blocks.

    If you want to run some default activity, you can define static block:

    class Ball {
    	static {
    		System.out.println("RUN");
    	}
    }
    

    import static

    import java.lang.System.in;
    import java.lang.System.in;
    
    .....
    	Scanner scanner = new Scanner(in);
    	out.print("...");
    

    Tip : mind name confliction

    Variable-length Argument

    public class MathTool {
        public static int sum(int... numbers) {
            int sum = 0;
            for (int number : numbers) {
                sum += number;
            }
            return sum;
        }
    }
    

    usage:

    System.out.println(MathTool.sum(1, 2, 3));
    System.out.println(MathTool.sum(1, 3));
    System.out.println(MathTool.sum(1, 2, 3, 4));
    

    Variable-length argument in method declaration:

    1. length parameter must be the last
    2. over one variable-length argument is illegal

    教材学习中的问题和解决过程

    这周的量比较大,主要就是边看边敲。不过都还是容易理解的。

    其他(感悟、思考等,可选)

    这次用英文感觉比上次流畅了些许。也不算难吧。

    代码托管:

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 50/50 2/2 8/8
    第二周 100/150 2/4 8/16
    第三周 250/400 2/6 10/26

    参考资料

  • 相关阅读:
    内容收缩伸展
    分页浏览的导航栏Bootstrap和js两种方法
    Bootstrap-缩略图
    Bootstrap-进度条
    Bootstrap-点击“&#215;”,可以关闭页面
    Bootstrap页头
    Bootstrap分页
    Bootstrap--面包屑路径导航
    Bootstrap--标签和徽章<新闻后面的new hot等>
    NSLog 去除上线版本
  • 原文地址:https://www.cnblogs.com/Christen/p/5300107.html
Copyright © 2011-2022 走看看