Java 学习笔记:
2013.11.5
第一章、java概述
1、java不支持多重继承,友元类和运算付重载,通过“单纯继承+接口”方式实现多重继承功能
2、java核心技术:JDBC、JSP、JavaBeans、JavaMail
3、包的理解:从逻辑上看,包是类的集合,一个包中包含多个类,从存储概念上看,包是类的组织方式,一个包就是一个文件夹,一个文件夹中包含多个字节码文件;类与包的关系,就像是文件夹与文件的关系,包中可以有子包,子包对应一个子文件夹;
4、java常用的包:
Java.lang 语言包,java核心类库包含java语言必不可少的系统类定义,包含object 类,基本数据类型分装,数学运算,字符串,线程,异常处理
Java.util实用包 工具类库,包含日期类,集合类库
Java.awt 抽象窗口工具包, 提供构建图形用户界面的类库,包含组件,时间绘图功能
Java.io 输入输出流包 提供标准输入、输出流几文件类操作
Java.net 网络包 提供网络编程有关的类库
Java.swing 扩充和增强图形用户界面功能的类库
Java.sql 数据库类库应用功能的类库
5、应用包中的类:
包{.子包}.类|接口
6导入包:
Java.lang 语言包由java自动导入,可以省略包名,如Math.PI 、Math.sqrt()等
如果要应用其他类中的包,必须用import语句导入
语法格式:
Import 包{.子包}.类|接口*
*表示包中所有类
7、申明类所在的包:package语句指定源程序的类或接口所在的包或是子包
语法格式: package 包{.子包}
注意:在远程序文件夹中,package 语句只能写一次,切必须写在程序的第一行,即写在类申明之前,多个类可以属于同一包
8、java源程序结构
Package ---申明包0-1句
Import ----导入包0-多句
Public class | interface ---申明公有类或是接口0--1句,文件名与该名相同
Class ---申明默认类 0--多句
Interface --- 申明接口 0---多句
9、包可以 压缩成jar文件
第二章、java语言基础
1、标示符:java语言与c语言主要的不同点就是可以用美元符($),也可以用Unicode字符集中的字符,如汉字
2、java数据类型分两大类:
基本类型:数值类型(整数类型(byte,short,int long),浮点类型(float,double),字符类型(char))和布尔类型(boolean)
引用类型:数组,类,接口
3、最终变量:java语言中提供一种特殊的变量,只能进行一次赋值,称为最终变量,采用关键字final申明.
Eg: final int value;
Value = 100;
4、常量:包括直接常量和符号常量
直接常量:指在程序中直接引用的常量包括数值型的常量和非数值型的常量
符号常量:保存在程序中不能被改变数据,常量名是标示符买菜用关键字final声明
Eg: final int MAX = 10;
Final float PI = 3.14f;
5、运算符:与c语言不同的是c中%号除数和被除数均要为整数,而在java中被除数可以是实型;
6、位运算符:7个(~,&,^,|,<<,>>(带符号),>>>(无符号右移位))
7、New运算符:用于申请数组在存储空间,创建对象
8、运算的类型兼容性规则:java是强类型语言,不仅要求标示符先声明后使用,对运算符和操作数类型的匹配要求比C++高
9、注意:if,while,do....while(),switch()语句中都是布尔表达式
10、转移语句:
带标号的break语句:退出多层循环
不带标号的break语句:和C语言中差不多
同理continue也有带标号和不带标号的
11、数组:是相同数据类型的集合,java中的数组是引用类型,数组的元素可以是基本数据类型也可以是引用类型
12、一维数组:
声明一维数组变量:语法格式:数据类型[] 数组变量 数据类型 数组变量[]
使用new关键字为数组分配空间: 数组变量 = new 数据类型[长度]
数组的长度:java语言自动为每个数组变量提供length属性表示数组占用的存储单元个数 数组变量.length
数组元素的表示及运算:数组变量[下标]
数组的引用模型:java语言不支持c/c++语言中的指针类型,所以对数组的操作只能使用下标,不能使用指针,java数组与c/c++数组的另外一个区别是:java数组都是动态数组,并且是引用类型。
基本数据类型与引用数据类型的比较:
相同点:都需要申明,都可以赋值
不同点:存储单元的分配方式不同,两个变量之间的赋值方式不同
①基本数据类型变量传值赋值:基本数据类型变量获取存贮单元的方式是静态的,声明了变量的就意味着变量占据着存贮单元,变量保存数据的值,两个变量之间的赋值,传递的是值。
②数组变量的引用赋值:引用数据类型的变量获得存储单元的方式都是动态的,必须使用new运算符申请并动态获得存贮单元,引用变量保存地址,长度,引用计数等特性
使用关系运算(==,!=)能够判断两个数组变量是否引用同一个数组
a==b //结果为true时是引用同一个数组
注意:通常程序不需要释放数组,java会自动回收,如特殊需要,可以将数组变量赋值为null,释放数组空间。
b == null;
复制数组:java的system类提供复制数组的arraycopy()方法:
Public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length);
功能:将src数组从srcPos下标开始的length个元素复制到dest数组的destPos开始饿若干存储单元中
Eg:int a[] = {1,2,3,4,5} b[] = new int[6];
Arraycopy(a,0,b,1,4);
8、二维数组:
申明二维数组:int mat[][]; mat = new int [2][3]; int mat[][] = {{1,2,3},{4,5,6}};
二维数组的引用模型:二维数组mat由若干一维数组mat[0],mat[1]等组成,所以mat和mat[0]均可使用length属性表示数组长度
Mat.length //返回二维数组的长度,及二维数组的行数
Mat[0].length //返回一维数组的长度,及二维数组的列数
不规则二维数组:二维数组中每个一维数组mat[0],mat[1]等都是分散存储的,因此各一维数组mat[0],mat[1]等占用存储空间可以分为多次申请,切长度可不相同。
Eg:int mat[][];
Mat = new int [2][];
Mat[0] = new int[2];
Mat[1] = new int[3];
9、静态方法:
Java语言中没有全局函数,函数申明在类中,称为成员方法,有静态方法和实例方法两种
Java不支持类之外的全程变量,局部作用域:即使的变量不会被非法访问或修改,增加了安全性,又可在不同的作用域中声明同名的变量。
10、参数传递:方法调用的参数传递与赋值相同。及实际参数向形式参数赋值,
注意:①传递方式因形式参数的数据类型二不同,若是基本数据类型,则传值,若是引用数据类型,则传递引用
②若在方法体内,如果修改引用数据类型的形式参数,同时改变对应的实际参数
11、方法重载:
12、字符串:字符串是字符的有限序列,java的字符串string是一个类,属于引用数据类型,其特殊之处就在于他具有某些基本数据类型的特性,对字符串的操作和运算,及可以像基本数据类型变量一样,进行连接,赋值,和关系运算,也可以 像对象一样,通过调用类的方法执行java定义的操作。
字符串常量:就是由双引号括起来的字符序列。
注意:字符串不是字符数组,在java语言中字符串不是字符数组。不能以字符数组的方式通过下标对指定的位置字符进行操作。
字符串类特性:是一个类,具有构造方法,实例方法等
常用方法:int length()
Boolean equals(Object obj)
Char charAt(int index)返回index指定位置的字符,index从0开始
String substring(int begain) 返回序号从begain开始至字符串末尾的子串
String substring(int begain,int end) 返回序号从begain开始至end-1的子串
Static string format(string format,Object....args); 返回format指定格式的字符串