zoukankan      html  css  js  c++  java
  • Java7编程高级进阶学习笔记

    本书PDF 下载地址: http://pan.baidu.com/s/1c141KGS 密码:v6i1

    注:本文有空会跟新;
    讲述的是jdk7的内容;
    注关于java 更详细的内容请进入《Java 8编程官方参考教程(第9版).pdf》学习笔记  进行学习

    第1章Java简介

    1:为什么使用Java

     1:java 诞生时C++太费电脑资源,不方便嵌入式移植
     2:java 编写一次到处运行
    
    
    
    

    2:什么是Java

    
    
      java 是一门编程语言,移除了内存管理、安全性这类复杂的特性,转而将这些任务交给了虚拟机管理。
    
    
    
    

    3:Java虚拟机

    
    
       java编译器将java源程序编译成二进制“伪CPU指令构成”的字节码。Java虚拟机仿真了虚拟CPU,为java可执行文件提供了运行环境、字节码解释器、验证器。其中验证器用于内存
    管理、线程管理等其他用途。JVM本质是能够运行Java可执行文件的机器。java编译文件以“.class”形式结尾。
    
    
    image
    
    

    4:Java特性

    
    
      1:体积小
      2:简单易学
      3:面向对象
      4:兼具编译与解释特性
      5:与运行平台无关
      6:执行安全
      7:支出多线程
      8:动态特性:内省(introspection)  反射(reflection)
    
    
    
    

    5:ava的演变过程

    1: 1996年1月23日):代号Oak

       1: 提供了类库

       2:提供applet互联网小程序

    2:JDK1.1(1997年2月19日)

    1:引入javaBean 组件。

    2:引入 远程方法调用。让客户端调用运行在远程服务器的应用程序

    3:jar文件格式

    4:数字签名

    5:AWT增强

    6:其他改动

    3:JDK1.2(1998年12月8日):代号Playground

    1:引入Swing 图形编辑类库

    2:提供 2D API

    3: 实现拖拽功能

    4:音频增强

    5:引入 java平台上的ORB 对象请求代理实现类库

    6:安全增强

    7:其他增强

    4:JDK1.3(2000年5月8日):代号Kestrel

    5:JDK1.4(2002年2月6日):代号Merlin

    6:JDK5.0(2004年9月30日):代号Tiger

    7: JDKSE6(2006年12月11日):代号Mustang

    8:JDKSE7(2011年7月7日):代号Dolphin

    
    
    
    
    
    
    
    
    

    第2章:数组

    
    
    image
    
    
    
    

    1:数组介绍

    
    
    1:作用:用来处理相同数据类型的变量集合
    2:本质:相同数据类型的元素的集合,其中元算是数组的组成部分。数组中的每个元算可以使用唯一的

    索引值(下标)

    进行访问。
    
    
    
    

    2:数组声明

    
    
    1: 声明语法:
      1 type arrayName();
    或者是:
      1 type[ ]  arrayName ;
    
    
    image
    image
    
    
    
    
    
    

    3:创建数组

    
    
    1:示例:
      1 int [ ]  numberArray;  //声明一个数组类型变量 numberArray ,其数组元素类型为int
      2 numberArray= new int[20] ; //保存10个整数分配了连续内存,并将首个元算内存地址赋值给变量numberArray.数组初始化器为numberArray数组所有元算提供初始化值。
    
    
    
    

    4:访问和修改数组元算

    
    
      1 //访问数组元素:就是使用索引来访问数组元算。数组的每个元算都拥有唯一的索引值。数组元素可以使用数组名并跟上方括号内的索引值进行访问。
      2 
      3 arrayName[indexValue];
      4 
      5 //示例:
      6 int[] num=new int[5];
      7 int a1=num[0];//注意:下标是从0开始算数组总长度个数值的;如果下标不对则会出现 ArrayIndexOutOfBounds异常。
    
    
    
    

    5:初始化数组

    1:运行时初始化

      1 //示例:
      2 int[] num_Array=net int[10];
      3 //赋值
      4 num_Array[0]=0;
      5 num_Array[1]=1;
      6 num_Array[2]=2;
      7 ...
      8 num_Array[10]=10;
      9 //如果值相同或则有规律可循。往往使用循环比较好用
     10 for(int 1=0;i<10;i++){
     11     num_Array[i]=i+1;
     12 }
    
    

    2: 使用数字字面量初始化

    
    
      1 int[]  num_Array={1,2,3,4,5,6,7,78} ;
    
    
    image
    
    
    
    
    
    
      1 
      2 import java.io.*;
      3 /**
      4 * 显示数组用法程序
      5 *
      6 **/
      7 public class TestScoreAverage {
      8 
      9     public static void main(String[] args) {
     10         final int NUMBER_OF_STUDENTS = 5;  
    //final 关键字在程序中创建常量,变量被声明后值不可以再此被改变
     11         int[] marks = new int[NUMBER_OF_STUDENTS];
     12         try {
     13             BufferedReader reader = new BufferedReader(new InputStreamReader( System.in));
     15             for (int i = 0; i < NUMBER_OF_STUDENTS; i++) {
     16                 System.out.print("Enter marks for student #" + (i + 1) + ": ");
     17                 String str = reader.readLine();
     18                 marks[i] = Integer.parseInt(str);
     19             }
     20         } catch (Exception e) {
     21             e.printStackTrace();
     22         }
     23         int total = 0;
     24         for (int i = 0; i < NUMBER_OF_STUDENTS; i++) {
     25             total += marks[i];
     26         }
     27         System.out.println("Average Marks " + (float) total
     28                 / NUMBER_OF_STUDENTS);
     29     }
     30 }
    
    

    6:for_each 遍历循环数组 取值

      1  //for_each循环可以在不使用元素索引值的情况下遍历整个数组
      2 
      3 //这个是jdk5的新特性
      4 for(type varableName :collection){
      5   loopBody
      6 }
      7 
    
    
    具体示例如下:
      1  int[] n ={1,2,3,4,5,6,7,7,7,67,6};
      2 for(int m: n){
      3  System.out.println(m);
      4 }
      5 
    
    

    7: 多维数组

    即:指包含数组维数多于1维;可以创建二维、三维和n维数组(1<=n<=255)。
    
    

    1:二维数组声明和初始化

      1 
      2   //----------------------------------------------------------------------------------------
      3   //二维数组:例如一个包含 行与列的表格。其中表格的每一个单元格代表一个数组元算。
      4   //声明格式如下:
      5   type arrayName[][];
      6   type[] [] arrayname;
      7 
      8   //具体示例如下:
      9   final int n1=5; // 代表行
     10   final int n2=10 ;  //代表列
     11 
     12   int[ ] [ ] m ;
     13   m=new int[n1] [n2] ;
     14 
     15   //其元素格值显示:
     16   m[4][5]=5;
     17 
     18   //-------初始化------------------------------------------------------------------------
     19  //1:运行时初始化
     20 arrayName[row] [col] =data;
     21 //例如:
     22 int [][] m =new int[5][10];'
     23 //数组的单元格可以使用如下程序初始化
     24 m[0][1]=1;
     25 m[0][2]=2;
     26 ....
     27 m[5][10]=50
     28 
     29 
     30 //2:循环初始化
     31 
     32 final int r=5;c=10 ;
     33 int [][] m=new int[r][c];
     34 for(int i=o;i<r;i++){
     35  for(int j=0;j<c;j++){
     36   m[r][n]=i*j;
     37  }
     38 }
     39 
     40 //使用数组字面量初始化
     41 int [][] m={{1,1},{2,2},{3,3},{4,5}};
    
    
    
      1 
      2 
      3 /**
      4    *  展示使用二维数组的程序
      5    *
      6    **/
      7 public class MultiDimArrayApp {
      8 
      9     public static void main(String[] args) {
     10         final int MAX_STUDENTS = 50, MAX_SUBJECTS = 3;
     11         int[][] marks = new int[MAX_STUDENTS][MAX_SUBJECTS];
     12         // Adding data to the array
     13         for (int id = 0; id < MAX_STUDENTS; id++) {
     14             for (int subject = 0; subject < MAX_SUBJECTS; subject++) {
     15                 marks[id][subject] = (int) (Math.random() * 100);
     16             }
     17         }
     18         // Printing Array
     19         System.out.print("Student	");
     20         for (int subject = 0; subject < MAX_SUBJECTS; subject++) {
     21             System.out.print("	" + "Subject " + subject + "	");
     22         }
     23         System.out.println();
     24         for (int id = 0; id < MAX_STUDENTS; id++) {
     25             System.out.print("Student " + (id + 1) + '	');
     26             for (int subject = 0; subject < MAX_SUBJECTS; subject++) {
     27                 System.out.print("	" + marks[id][subject] + "	");
     28             }
     29             System.out.println();
     30         }
     31     }
     32 }

    2: 使用 for_each循环

      1 int i=0;
      2 for(int[] a:m){
      3   System.out.println("a"+i+++'	');
      4   for(int v : a){
      5     System.out.println("	"+v+"	");
      6   }
      7  System.out.println();
      8 }
    
    
    
    
    
    

    8:N维数组

    
    
      1  //三维数组声明
      2 type[][][] arrayName=new type[size][size][ size ] ;
      3 //即:
      4 int [][][]a=new int[1][2][3];
    
    

    9:非矩形数组

    
    
    image
    
    
    
    
    image
    
    
    image
    
    
    
    
    
    

    10:确定长度

    
    
      1 /**
      2    *   确定数组长度
      3    *
      4    **/
      5 public class ArrayLengthApp {
      6 
      7     public static void main(String[] args) {
      8         final int SIZE = 5;
      9         int[] integerArray = new int[SIZE];
     10         float[] floatArray = {5.0f, 3.0f, 2.0f, 1.5f};
     11         String[] weekDays = {"Sunday", "Monday", "Tuesday",
     12             "Wednesday", "Thursday", "Friday", "Saturday"};
     13         int[][] jaggedArray = {
     14             {5, 4},
     15             {10, 15, 12, 15, 18},
     16             {6, 9, 10},
     17             {12, 5, 8, 11}
     18         };
     19         System.out.println("integerArray length: " + integerArray.length);
     20         System.out.println("floatArray length: " + floatArray.length);
     21         System.out.println("Number of days in a week: " + weekDays.length);
     22         System.out.println("Length of jaggedArray: " + jaggedArray.length);
     23         int row = 0;
     24         for (int[] memberRow : jaggedArray) {
     25             System.out.println("	Array length for row "
     26                     + ++row + ": " + memberRow.length);
     27         }
     28     }
     29 }
    
    
    结果输出:
    image
    
    
    
    

    11: 数组复制

    
    
      1 
      2 import java.util.Arrays;
      3 /**
      4    *    数组复制
      5    *
      6    **/
      7 public class ArrayCopyApp {
      8 
      9     public static void main(String[] args) {
     10         float[] floatArray = {5.0f, 3.0f, 2.0f, 1.5f};
     11         float[] floatArrayCopy = 
    floatArray.clone(); //此方法为数组的复制方法:把a数组的所有元算复制到b数组中
     12         System.out.println(Arrays.toString(floatArray) + " - Original");
     13         System.out.println(Arrays.toString(floatArrayCopy) + " - Copy");
     14         System.out.println();
     15         System.out.println("Modifying the second element of the original array");
     16         floatArray[1] = 20;
     17         System.out.println(Arrays.toString(floatArray)
     18                 + " - Original after modification");
     19         System.out.println(Arrays.toString(floatArrayCopy) + " - Copy");
     20         System.out.println();
     21         System.out.println("Modifying the third element of the copy array");
     22         floatArrayCopy[2] = 30;
     23         System.out.println(Arrays.toString(floatArray) + " - Original");
     24         System.out.println(Arrays.toString(floatArrayCopy)
     25                 + " - Copy array after modification");
     26     }
     27 }
    执行后输出结果如下:
    
    
    image
    
    
    
    
    image

    12:找出数组的类表示

    
    
      1 /**
      2    *      找出数组的类表示
      3    *
      4    **/
      5 public class ArrayClassNameApp {
      6 
      7     public static void main(String[] args) {
      8         final int SIZE = 5;
      9         int[] integerArray = new int[SIZE];
     10         float[] floatArray = {5.0f, 3.0f, 2.0f, 1.5f};
     11         String[] weekDays = {"Sunday", "Monday", "Tuesday",
     12             "Wednesday", "Thursday", "Friday", "Saturday"};
     13         int[][] jaggedArray = {
     14             {5, 4},
     15             {10, 15, 12, 15, 18},
     16             {6, 9, 10},
     17             {12, 5, 8, 11}
     18         };
     19         Class cls = integerArray.getClass();
     20 
     21         System.out.println(
     22                 "The class name of integerArray: " + 
    cls.getName()
     );
    // arrayName.getClass()
     23         cls = floatArray.getClass();
     24 
     25         System.out.println(
     26                 "The class name of floatArray: " + cls.getName());
     27         cls = weekDays.getClass();
     28 
     29         System.out.println(
     30                 "The class name of weekDays: " + cls.getName());
     31         cls = jaggedArray.getClass();
     32 
     33         System.out.println(
     34                 "The class name of jaggedArray: " + cls.getName());
     35         System.out.println();
     36         cls = cls.getSuperclass();
     37 
     38         System.out.println(
     39                 "The super class of an array object: "
     40                 + cls.getName());
     41     }
     42 }
    
    
    
    
    
    
    
    

    第三章:类

    
    
    image
     image
    
    

    1:面向对象概念

    1:面向对象编程的特性

     1:封装 
      image
    image
    2:继承
       image
    
    
    3:动态
        
    
    

    2:面向对象编程的好处

    image
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    2:类

    image
    
    

    1: 定义类

    
    
      1 //定义类的一般形式如下:
      2 Modifiers 
    可选
      class ClassName{
      3    classBody 
    可选
      4 }
    image
      1 ClassModifieres 
    可选
     class Identifier ClassBody
    image
      1 //class 关键字之前的修饰符用于定义类的可见性
      2 
      3 class MyClass{
      4  //attributes
      5  // constructors
      6   //methods
      7 
      8 }
    
    
    image
    
    
    
    
    
    
    
    
    
    

    2: 定义Point 类

    
    
      1 /*
      2 *声明Point类
      3 */
      4 
      5 class Point{
      6   int   x;
      7   int   y;
      8 
      9 }
     10 
     11 /*  说明:
     12  *   该类使用关键字class 并紧跟类名Point 定义而成。由于修饰符在类定义时是可以选的,因此并未
     13  * 包含在上述的定义中。修饰符用于定义类的可见性。
     14  *  {} 中的内容表示类的主体。
     15  */
    
    

    3:使用类

    image
    
    
      1 Point p=new Point();
    
    
    image
    
    
    
    
    
    

    4: 访问/修改字段

    
    
    image
    
    
    
    

    5: 类的示例程序

    
    
      1 
      2 class Point {
      3 
      4     int x;
      5     int y;
      6 }
      7 
      8 class TestPoint {
      9 
     10     public static void main(String[] args) {
     11         System.out.println("Creating a Point object ... ");
     12         Point p = new Point();
     13         System.out.println("Initializing data members ...");
     14         p.x = 4;
     15         p.y = 5;
     16         System.out.println("Printing object");
     17         System.out.println("Point p (" + p.x + ", " + p.y + ")");
     18     }
     19 }
    
    

    6:方法声明

      1 
      2 import java.util.*;
      3 
      4 class Point {
      5 
      6     int x;
      7     int y;
      8 
    
    9 double getDistance() { 10 return (Math.sqrt(x * x + y * y)); 11 }
     12 }
     13 
     14 class TestPoint {
     15 
     16     public static void main(String[] args) {
     17         System.out.println("Creating a Point object ... ");
     18         Point p1 = new Point();
     19         System.out.println("Initializing object ...");
     20         p1.x = 3;
     21         p1.y = 4;
     22         double distance = p1.getDistance();
     23         StringBuilder sb = new StringBuilder();
     24         Formatter formatter = new Formatter(sb, Locale.US);
     25         formatter.format("Distance of Point p1(" + p1.x + "," + p1.y
     26                 + ") from origin is %.02f", distance);
     27         System.out.println(sb);
     28         System.out.println();
     29         sb.delete(0, sb.length());
     30         System.out.println("Creating another Point object ... ");
     31         Point p2 = new Point();
     32         System.out.println("Initializing object ...");
     33         p2.x = 8;
     34         p2.y = 9;
     35         distance = p2.getDistance();
     36         formatter.format("Distance of Point p2(" + p2.x + ","
     37                 + p2.y + ") from origin is %.02f", distance);
     38         System.out.println(sb);
     39     }
     40 }
    
    
    当编译运行时结果如下:
    
    
    image
    image
    
    

    7:对象内存表示

    
    
    image
    
    
    
    
    
    
    
    
    
    

    3:信息掩藏

    1:展示信息掩藏概念的程序

      1 
      2 class Wallet {
      3 
      4     private float money;
      5 
      6     public void setMoney(float money) {
      7         this.money = money;
      8     }
      9 
     10     public boolean pullOutMoney(float amount) {
     11         
    if (money >= amount) { 12 money -= amount; 13 return true; 14 } 15 return false;
     16     }
     17 }
     18 
     19 class Person {
     20 
     21     public static void main(String[] args) {
     22         Wallet wallet = new Wallet();
     23         System.out.println("Putting $500 in the wallet
    ");
     24         wallet.setMoney(500);
     25         System.out.println("Pulling out $100 ...");
     26         boolean isMoneyInWallet = wallet.pullOutMoney(100);
     27         if (isMoneyInWallet) {
     28             System.out.println("Got it!");
     29         } else {
     30             System.out.println("Nope, not enough money");
     31         }
     32         System.out.println("
    Pulling out $300 ...");
     33         isMoneyInWallet = wallet.pullOutMoney(300);
     34         if (isMoneyInWallet) {
     35             System.out.println("Got it!");
     36         } else {
     37             System.out.println("Nope, not enough money");
     38         }
     39         System.out.println("
    Pulling out $200 ...");
     40         isMoneyInWallet = wallet.pullOutMoney(200);
     41         if (isMoneyInWallet) {
     42             System.out.println("Got it!");
     43         } else {
     44             System.out.println("Nope, not enough money");
     45         }
     46     }
     47 }
    
    
    编译运行结果如下:
    image
    
    
    
    
    
    

    4:封装

    
    
    image
    
    
      1 class  Date{
      2 
      3 
      4   public  int  day;
      5   public  int  mount;
      6   public  int  year;
      7 
      8  public void setMount(int month){
      9      if(month >=1&& month <=12){
     10        this.month=month;
     11       }else{
     12        System.out.println(month);
     13      }
     14 
     15   }
     16 
     17 }
    image
    
    
    
    
    
    
    
    
  • 相关阅读:
    Knime 使用 初探
    MySql可视化工具MySQL Workbench使用教程
    MySQL导入sql 文件的5大步骤
    Import MySQL Dumpfile, SQL Datafile Into My Database
    导入已有的vmdk文件,发现网络无法连通
    VirtualBox镜像复制载入
    对自己说的话
    linux遇见的问题
    vbox下安装 linux 64 bit出现“kernel requires an x86_64 cpu
    Servlet 3 HttpServletRequest HttpServletResponse 验证码图片 form表单
  • 原文地址:https://www.cnblogs.com/ios9/p/7503022.html
Copyright © 2011-2022 走看看