Java学习(一)
- Java三大平台
- Java SE标准版 适合桌面应用
- Java EE企业版 适合网络应用
- Java ME微型版 适合手机应用
-
Java的特点
- 简单易学
- 面向对象
- 平台无关性
- 安全稳定
- 支持多线程
- 有丰富的类库
- Java三种核心机制
- Java虚拟机
- 代码安全性检测
- 垃圾收集机制
- 类与对象
- 类:具有共同属性和行为的对象集合
- 属性:变量
- 行为:函数
- 类与对象的关系
- 类是对象的抽象
- 对象是类的实例
- 类:具有共同属性和行为的对象集合
- 面向对象的三大特征
- 封装性
- 模块化:将属性和行为封装在类中,程序定义很多类
- 信息隐蔽:将类的细节部分隐藏起来,用户只通过受保护的接口访问某各类
- 继承性
- 继承性:父类和子类之间共享数据和方法
- 继承的好处
- 更好地进行抽象和分类
- 增强代码的重用率
- 提高可维护性
- 多态性
- 不同的对象收到同一个消息(调用方法)可产生完全不同的效果
- 实现的细节有接受对象自行决定
- 封装性
- java的类型(Application和Applet)
- 两者结构和运行环境不同
- 前者是独立的程序,需要执行器(调用虚拟机)来运行
- 后者是潜在HTML网页中的非独立的程序
- 用专门的appletviewer来运行
- 或者由Web浏览器(调用Java虚拟机)来运行
- Application
- Applet
- 两者结构和运行环境不同
- 程序中进行输入与输出
- 文本界面
- 使用Scanner类
- 使用in及out
- 输入输出字符
- char c = '';
- System.out.print("Please input a char:");
- try{
- c = (char) System.in.read();
- }catch(IOException e){}
- System.out.println("You have entered:"+c);
- 输入输出行
- try{
- BufferedReader in = new BufferedReader( new InputStreamReader(System.in));
- s = in.readLine();
- }catch(IOException e){}
- 输入输出数字
- BufferedReader in = new BufferedReader( new InputStreamReader(System.in));
- System.out.print("Please input an int:");
- s = in.readLine();
- n = Integer.parseInt(s);
- 图形界面输入与输出
- 可以使用文本框对象(TextField)获取用户输入的数据
- 可以使用标签对象(Label)或文本框对象输出数据
- 可以使用命令按钮(Button)来执行命令
- 文本界面
- 数据类型
- 基本数据类型(变量在栈)
- 数值型
- 整数类型(默认是int类型,声明long型常量可以后加‘l’或‘L’)
- 整数类型常量有四种表达形式
- 十进制整数,如12,0,234
- 八进制整数,要求以0开头,如012
- 十六进制整数,要求以0x或0X开头,如0x12,其中10-15分别以a-f(此处a-f不区分大小写)来表示
- 二进制数,以0b或0B开头,如0b00010010(Java7以上使用)
- byte(1字节,范围在-128到127)
- short(2字节,范围在-2的15次方到2的15次方-1)
- int(4字节,范围在-2的31次方到2的31次方-1)
- long(8字节,范围在-2的63次方到2的63次方-1)
- 如果使用一个巨大的整数值(超出int类型的表数范围)是,java不会自动把这个整数值当做long类型来处理。如果希望吧一个整数值当做long类型来处理,应该在这个整数值后增加英文字子母l或者L作为后缀。通常推荐L作为后缀,因为英文字母l很容易和1搞混。
- 可以把一个较小的整数值(在int类型的表数范围以内)直接赋给一个long类型的变量,这并不是因为java会把这个较小的整数值当成long类型来处理,java依然把这个整数值当成int类型来处理,只是因为int类型的值会自动类型转换到long类型。
- 整数类型常量有四种表达形式
- 浮点类型(默认是double,如果声明常量为float型,需在数字后面加F或者f,如float f 3.14f)
- 科学计数法(只有浮点类型的数值才可以使用科学计数法表示)
- 3.14E2表示的是3.14乘以10的2次方
- double(8字节,范围-1.798E308~1.798E308)
- float(4字节,范围-3403E38~3.403E38)
- java还提供了三个特殊的浮点数值:正无穷大通过Double或Float类的POSITIVE_INFINTY表示;负无穷大通过Double或Float类的NEGATIVE_INFINTY表示,非数通过Double或Float类的NaN表示。所有的正负无穷大都是相等的,而NaN不与任何数值相等,甚至不与NaN相等。
- 科学计数法(只有浮点类型的数值才可以使用科学计数法表示)
- 整数类型(默认是int类型,声明long型常量可以后加‘l’或‘L’)
- 字符型(char)
- 字符型值有如下三种表示形式
- 直接通过单个字符来制定字符型,例如‘A’
- 通过转义字符表示特殊字符型,例如‘\n’
- 直接使用Unicode值来表示字符型值,例如‘\u0001’
- 字符型值有如下三种表示形式
- 布尔型(boolean):只允许取值为true和false,不允许用0或者非0代替。其他数据类型的值也不能转换为boolean类型。
- java规范并没有强制指定boolean类型的变量所占有的内存空间。虽然boolean类型的变量或值只要一位即可保存,但由于大部分计算机在分配内存时允许分配的最小内存单元是字节(8位),因此bit大部分时候实际上占用8位。
- Java7引入一个新功能:程序员可以在数值中使用下划线,不管是整型数值,还是浮点型数值,都可以自由的使用下划线。通过下划线分割,可以更直观的分辨数值中到底包含多少位。如:double pi = 3.14_15_92_6; int a = 1231_1231_1231_1231_1231;
- 数值型
- 引用数据类型(变量引用到堆)
- 类
- 接口
- 数组
- null类型
- null没有名称,不可能声明一个null类型的变量或者转换到null类型
- 空引用(null)是null类型变量唯一的纸。空引用可以转换为任何应用类型。
- 空引用只能转换成引用类型,不能转换成基本类型,因此不要把一个null值付给基本数据类型的变量。
- 转义字符
- \r 回车
- \n 换行
- \f 走纸换页
- \t 横向跳格
- \b 退格
- 标识符(任何一个变量、常量、方法、对象和类都要有名字,最好与其意义相符,以增加程序可读性)
- 标识符要满足如下规定
- 标识符可以有字母、数字和下划线(_)和美元符号($)组合而成
- 标识符必须以字母、下划线或者美元符号开头,不能以数字开头
- Java是大小写敏感的语言
- 按照Java惯例,类名首字母用大写
- 其余的首字母都用小写
- 少用下划线
- 常量随用随定义
- 标识符要满足如下规定
- 自动类型转换
- 基本数据类型(变量在栈)
- 运算符
- 算数运算符:+,-,*,/,%,++,--
- 关系运算符:>,<,>=,<=,==,!=
- 逻辑运算符:!,&,|,^,&&,||
- 位运算符:&,|,^,~,>>,<<,>>>
- 赋值运算符:= 拓展赋值运算符:+=,-=,*=,/=
- 字符串连接运算符:+
- 流程控制语句
- 程序的三种基本流程
- 顺序
- 分支
- 循环
- 程序的三种基本流程
- 程序的注释
- Java可以采用三种注释方式
- //用于单行注释。注释从//开始,终止于行尾
- /*……*/用于多行注释,注释从/*开始,到*/结束,且这种注释不能相互嵌套
- /**……*/是Java所特有的doc注释。他从/**开始,到*/结束
- javadoc命令可以对源文件、包生成API文档。Java源文件可以支持通配符。javadoc的常用选项有如下几个。
- -d<directory>:该选项指定一个路径,用来将生成的API文档放到指定的目录下。
- -windowwtitle<text>:该选项指定一个字符串,用于设置API文档的浏览器窗口标题
- -doctitle<html-code>:该选项指定一个HTML格式的文本,用于指定概述页面的标题
- 只有对处于多个包下的源文件来生成API文档时,才有概述页面
- 这种注释主要是为了支持JDK工具javadoc二采用的,javadoc能识别主时钟用标记@标识的一些特殊变量,并把doc注释加入它所生成的HTML文件。常见的@标记如下。
- @see:引用其他类
- @version:版本信息
- @author:作者信息
- @param:参数名说明
- @return:说明
- @exception:异常说明
- 对于有@标记的注释,javadoc在生成有关程序的文档事,会自动地识别他们,并生成相应的文档。javadoc常用选项有如下几个。
- -d <directiory>:该选项指定一个路径,用于将生成的API文档放到指定目录下。
- -windowtitle<text>:该选项指定一个字符串,用于设置API文档的浏览器窗口标题
- -doctitle<html-code>:该选项指定一个HTML格式的文本,用于指定概述页面的标题(只有对于多个包下的源文件来生成API文档时,才有概述页面)
- -header<html-code>:该选项指定一个HTML格式的文本,用于指定概述页面页眉
- javadoc工具默认不会提取@author和@version两个标记的信息,如果需要提取这两个标记的信息,应该在使用javadoc工具时指定-authour和-version两个选项。
- javadoc命令可以对源文件、包生成API文档。Java源文件可以支持通配符。javadoc的常用选项有如下几个。
- Java可以采用三种注释方式
- 分支语句--if
- if(条件表达式)
- 语句块;//if分支
- else
- 语句块;//else分支
- 分支语句--switch语句
- 使用switch要注意
- 变量类型是整数、字符、字符串(String)
- case后面是常量
- 注意break;
- 使用switch要注意
- 循环语句(在循环条件满足的情况下,反复执行特定代码)
- 循环的五个要素
- 初始化部分
- 循环条件部分
- 循环体部分
- 迭代部分
- 结束后处理
- 循环的三种写法
- for循环
- while循环
- do/while循环
- 循环的五个要素
- 特殊的流程控制语句
- break
- break;用于终止某个语句块的执行
- {……
- break;
- ……
- }
- break语句出现在多层嵌套的语句块中,可以通过标签指明要终止的是哪一层语句块
- label1:{……
- label2: {……
- label3: {……
- break label2;
- ……
- }
- }
- }
- break;用于终止某个语句块的执行
- continue
- continue语句用于跳过某个循环语句块的一次执行
- continue语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环
- break
- 数组
- 数组是多个相同类型数据的组合
- 一维数组的声明方式:
- int[] a;
- double []b;
- Mydate []c;(对象数组)
- 注意,int []a,b,c;a,b,c三个都是数组
- int a[],b,c;a是数组,b,c是不是数组。
- Java语言中声明数组时不能指定其长度(数组元素的个数) 数组时引用类型
- int [] a = new int [5];
- 这里的a只是一个引用
- 数组一经分配空间,其中的元素也被按照成员变量同样的方式被隐式初始化。例如:
- (数值类型为0,引用类型是null)
- int [] a = new int [5];
- //a[3] 则是0
- (数值类型为0,引用类型是null)
- 是静态初始化
- 在定义数组的同时就为数组元素分配空间并赋值
- int [] a = {3,6,9};
- 或者写为 int [] a = new int[]{3,6,9};
- 在定义数组的同时就为数组元素分配空间并赋值
- 数组元素的引用方式
- index为数组元素下标,可以是整型常量或整型表达式。如a[3],b[i],c[i*6];
- 数组元素下标从0开始;长度为n的数组合法下标取值范围:0~n-1;
- 每一个数组分配空间以后,这个数组的空间就固定了,同事,有一个属性length来指明它的长度
- 例如:a.length指明数组a的长度
- Java还有一个增强的for语句来方便处理数组,或者集合里面的元素。
- 如:
- int [] ares = new int[10];
- for(int age : ages)
- {
- System.out.println(age);
- }
- 这种语句是只读式的遍历
- 复制数组
- Array.Copy方法提供了数组元素复制功能
- 例如:
- //源数组
- int [] source = {1,2,3,4,5,6};
- //目的数组
- int []dest = {10,9,8,7,6,5,4,3,2,1};
- //复制源数组中从下标0开始的source.length个元素到目的数组,从下标0的位置开始存储
- Array.Copy(source,0,dest,0,source.Lenght);
- Array.Copy方法提供了数组元素复制功能
- 多维数组
- 二维数组
- 举例:int [][] a = {{1,2},{3,4,0,9},{5,6,7}};
- 二维数组是数组的数组
- 多维数组的声明和初始化应按从高维到低维的顺序进行
- 二维数组