Java7编程高级进阶学习笔记


第1章Java简介

1:为什么使用Java

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


2:什么是Java


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


3:Java虚拟机


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


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章:数组




1:数组介绍


1:作用:用来处理相同数据类型的变量集合
2:本质:相同数据类型的元素的集合,其中元算是数组的组成部分。数组中的每个元算可以使用唯一的索引值(下标)进行访问。


2:数组声明


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




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





  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\t");
 20         for (int subject = 0; subject < MAX_SUBJECTS; subject++) {
 21             System.out.print("\t" + "Subject " + subject + "\t");
 22         }
 23         System.out.println();
 24         for (int id = 0; id < MAX_STUDENTS; id++) {
 25             System.out.print("Student " + (id + 1) + ‘\t‘);
 26             for (int subject = 0; subject < MAX_SUBJECTS; subject++) {
 27                 System.out.print("\t" + marks[id][subject] + "\t");
 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+++‘\t‘);
  4   for(int v : a){
  5     System.out.println("\t"+v+"\t");
  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:非矩形数组








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("\tArray length for row "
 26                     + ++row + ": " + memberRow.length);
 27         }
 28     }
 29 }

结果输出:


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 }
执行后输出结果如下:



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 }




第三章:类


 

1:面向对象概念

1:面向对象编程的特性

 1:封装 
  
2:继承
   

3:动态
    

2:面向对象编程的好处









2:类














				
时间: 2024-10-15 21:54:34

Java7编程高级进阶学习笔记的相关文章

JavaScript高级程序设计学习笔记--基本概念

1.语句 ECMAScript中的语句以一个分号结尾:如果省略分号,则由解析器确定语句的结尾,如下例所示: var sum=a+b //即使没有分号也是有效的语句--推荐 var diff=a-b; //有效的语句--推荐 虽然语句结尾的分号不是必需的,但我们建议任何时候都不要省略它.两个原因:1.加上分号可以避免很多错误 2.加上分号也会在某些情况下增进代码的性能,因为这样解析器就不必再花时间 推测应该在哪里插入分号了. 2.变量 var message="hi"; 像这样初始化变量

JavaScript高级程序设计学习笔记--错误处理与调试

try-catch语句 只要代码中包含finally子句,则无论try或catch语句块中包含什么代码--甚至return语句,都不会阻止finally子句的执行,来看下面这个函数: function testFinally(){ try{ return 2; }catch(error){ return 1; }finally{ return 0; } } 调用这个函数会返回0(PS:但我实际执行的时候会先返回0,再返回2) 抛出错误 与try-catch语句相配的还有一个throw操作符,用于

JavaScript高级程序设计学习笔记--面向对象程序设计

工厂模式 虽然Object构造函数或对象字面量都可以用来创建单个对象,但这些方式有个明显的缺点:使用同一个接口创建很多对象,会产生大量的重复代码.为解决这个问题,人们开始使用 工厂模式的一种变体. function createPerson(name,age,job){ var o=new Object(); o.name=name; o.age=age; o.job=job; o.sayName=function(){ alert(this.name); }; return o; } var

Javascript高级程序设计学习笔记

3. 基本概念 基本数据类型:Undefined,Null,Boolean,Number,String. 复杂数据类型:Object. 3.6 语句 switch比较值时用的是全等运算符 “===” ,因此不会进行类型转换.例如 “10” 不等于10. 3.7 函数 ECMAScript函数不介意传递进来多少个参数,也不在乎参数的类型.即使定义的函数只接受两个参数,在调用的时候也可以传递任意多个或者0个.因为ECMAScript的参数在内部是用一个数组表示的,在函数体内部可以通过argument

shell编程教程or学习笔记

----------------------------------------------------hello world------------------------------------------- linux 创建如下文件 vim hello #! /bin/bash   //告诉Shell 使用哪个Shell 程序 #Display  a line    //#表示注释 //空白行用来区分不同更功能 没有实际意义 name="[email protected]" ec

《javascript DOM 编程艺术》学习笔记(一)

书籍已经看完了前六章的内容,有了一定的编程基础后觉得本书内容相对来说过于简单,应该是完全针对于初学者的(或者如作者所说是写个Web设计师的),作者在表述一个问题,一句代码都解释得非常啰嗦与重复,不过从书中学习到更多的,也是作者想让读者体会的是让大家理解DOM脚本编程技术背后的思路和原则,作者特别以早期Javascript的滥用来强调Web的规范与标准,这一点是非常值得学习的,也是一个程序员的基本素养. 截止到第六章,将所学到的知识点归纳如下: 1.基本语法:与php一样是弱类型语言,虽然功能强大

JavaScript高级程序设计学习笔记--高级技巧

惰性载入函数 因为浏览器之间行为的差异,多数JavaScript代码包含了大量的if语句,将执行引导到正确的代码中,看看下面来自上一章的createXHR()函数. function createXHR(){ if (typeof XMLHttpRequest != "undefined"){ return new XMLHttpRequest(); } else if (typeof ActiveXObject != "undefined"){ if (typeo

JavaScript高级程序设计学习笔记--DOM

DOM(文档对象模型)是针对HTML和XML文档的一个API(应用程序接口). Document类型 文档的子节点 虽然DOM标准规定Document节点的子节点可以是DocumentType,Element,ProcessingInstruction或Comment,但还有两个内置的访问其子节点的快捷方式.第一个就是documnetElement属性,该属性始终指向HTML页面中的<html>元素.另一个就是通过childNodes列表访问文档元素,但通过documentElement属性则

JavaScript高级程序设计学习笔记--BOM

window对象 BOM的核心对象是window,它表示浏览器的一个实例.在浏览器中,window对象有双重角色,它既是通过JavaScript访问浏览器窗口的一个接口,又是ECMScript规定的Global对象. 全局作用域 由于window对象同时扮演着ECMAScript中Global对象的角色,因此所有在全局作用域中声明的变量.函数都会变成window对象的属性和方法.来看下面的例子: var age=29; function sayAge(){ alert(this.age); }