|
Java 私塾第一、二章笔记整理
第一章 java入门
一.Java是什么?
一种计算机编程语言
一种软件开发平台
一种软件运行平台(JRE :java runtime environment)
一种软件部署环境
二.Java版本:
Java 标准版:JSE(java standard edition)
Java缩微版:JME(java micro edition)
Java企业版:JEE(java Enterprise edition)
【此处有三者关系图片,可以到java 私塾官网下载完整的笔记,www.javass.cn】
三.Java特点:
简单的说java具有如下特点:简单的,面向对象的,与平台无关的,多线程,分布式,安全,高性能,可靠的,解释型,自动垃圾回收等特点。
与平台无关:一次编写到处运行:Write Once, Run Anywhere.
四.Java工作原理:
【此处有java工作原理图片,可以到java 私塾官网下载完整的笔记,www.javass.cn】
编写代码——> 编译——>类装载(ClassLoader) ——>字节码(byte-code) ——>校验——>解释(interpreter)运行
五.Java技术三大特性:
1. Java 虚拟机(JVM :Java Virtual Machine)
(1) 通过ClassLoader 寻找和装载class文件
(2) 解释字节码成为指令并执行,提供class文件的运行环境
(3) 进行运行期间垃圾回收
(4) 提供与硬件交互的平台
【此处有图片,可以到java 私塾官网下载完整的笔记,www.javass.cn】
2. 垃圾回收
检查和释放不再需要的已分配的内存
3. 代码安全
(1) 代码首先会被编译成class文件,若代码有问题,则提示编译有错误,无法通过编译。
(2) 通过编译后,类装载的时候,还会进行类装载检查。
(3) 类装载后,运行之前,还会进行字节码校验。
(4) 如果程序在网上运行,还有“沙箱”保护。
六.构建JEE开发环境
安装目录: D:\Java\jdk1.6\
D:\Java\jre1.6\
环境变量配置:Path: D:\Java\jdk1.6\bin; 或者 Path: %JAVA_HOME%\bin;
提供给操作系统寻找到Java命令工具的路径。
JAVA_HOME: D:\Java\jdk1.6\
提供给基于JAVA的程序使用,让他们能够找到JDK的位置。
CLASSPATH: .;
提供程序在运行期寻找所需资源的路径。
JDK文件夹:
bin: binary的简写,下面存放的是各种java的执行文件。
include: 需要引入的一些头文件,主要是C和C++的,JDK本身是通过C和C++实现的。
jre: java运行环境
lib: library的简写,JDK所需的一些资源文件和资源包。
第二章 基础语法
一. 关键字
goto 和 const 不是java 关键字,是java的保留字。true和false是不是关键字。
二. 标识符
命名规则:
(1) 首字母只能以字母,下划线,$开头,其后可以跟字母,下划线,$和数字。
(2) 标识符区分大小写。
(3) 标识符不能使关键字。
(4) 标识符长度没有限制。
命名建议:
(1) 驼峰标识:若由多个单词组成,则第二个单词开始每个单词首字母大写。
(2) 尽量做到见名知意。
(3) 尽量少用带$符号的标识符。
(4) 标识符不应该使用中文,虽然可以编译和运行成功,但不建议这么做。
三.数据类型
数据类型分类:基本数据类型和引用数据类型。
基本数据类型:四类八种:
(1) 整数型:byte, short, int, long
(2) 浮点型:float, double
(3) 字符型:char
(4) 逻辑性:boolean
整数型:byte:字节型
short:短整型
int:整型
long:长整型
明确表示是long型,可在后边直接加L(l)。
整数型的值,没有特别指明,默认是int型。
取值范围和默认值
名称 | 长度 | 范围 | 默认值 | byte | 8位 | -2^7~2^7-1 | 0 | short | 16位 | -2^15~2^15-1 | 0 | int | 32位 | -2^31~2^31-1 | 0 | long | 64位 | -2^63~2^63-1 | 0 |
浮点型:float ,double
提示:
(1) 浮点型的值,如果没有特别指明,默认是double型的。
(2) 定义float型时,一定要指明是float型,可通过在数字后边加F(f)。
(3) 定义double类型时,可以不用指明,默认的就是double型,也可通过在数字后边添加D(d)来表示。
取值范围和默认值
名称 | 长度 | 默认值 | float | 32位 | 0f | double | 64位 | 0 |
字符型:char 用来标识单个字符,一个char代表一个16-bit的无符号的unicode字符,一个char字符必须包含在单引号内。
取值范围和默认值
名称 | 长度 | 范围 | 默认值 | char | 16位 | Unicode2^16-1 | Unicode 0 |
转义字符:\n 回车
\t 水平制表符
\b 退格
\r 换行
\f 换页
\’ 单引号
\” 双引号
\\ 反斜杠
逻辑型:boolean 只有两个文字值:即true和false。
Boolean默认值是false。
Java中不可以将整数类型和逻辑类型相转换。
字符串类型:String
标识方式是用双引号将要表示的字符串引起来。
注意:
(1) String 不是原始数据类型,而是一个类(class)
(2) String包含的字符数量是任意多个,而字符类型只能是一个
(3) String默认值是null
四. 常量和变量
常量:值不可以改变的标识符
定义规则:尽量全部大写,并且用下划线将词分隔。
变量:值可以改变的标识符,用来引用一个存储单元,用标识符来表示,可以通过操作变量来操作变量所对应的内存区域或值块的值。
五. Java代码的基本知识
注释:(1) //:注释单行语句
(2)/* */: 多行注释
(3)/** */:文档注释
常常在javadoc注视中加入一个“@”开头的标记,结合javadoc指令的参数,可以在生成的api文档中产生特定的标记。
常用的标记:@author:作者
@version:版本
@deprecated:不推荐使用的方法
@param:方法的参数类型
@return:方法的返回类型
@see:”参见”
@exception:抛出的异常
@throws:抛出的异常和exception同意
应用范围:
类和接口文档中的注释的标记:@author @version @see @deprecated
方法和构造方法的注释中的标记:@deprecated @param @return @see @exception @throws:
属性文档注释中的标记:@see @deprecated
六. 运算符
移位运算
负数等于正数取反加一
1357=0000 0000 0000 0000 0000 0101 0100 1101
-1357=1111 1111 1111 1111 1111 1010 1001 1011
>>n 右移n位,高位用符号位填充,
1357>>5=0000 0000 0000 0000 0000 0000 0010 1010
-1357>>5=1111 1111 1111 1111 1111 1111 1101 0101
无符号右移 >>>n 右移n位,高位用0填充,
1357>>>5=0000 0000 0000 0000 0000 0000 0010 1010
-1357>>>5=0000 0111 1111 1111 1111 1111 1101 0101
<<n,左移n位,低位用0填充,
1357<<5=0000 0000 0000 0000 1010 1001 1010 0000
-1357<<5=1111 1111 1111 1111 0101 0011 0110 0000
七. 控制语句
if…else 语句
switch语句:
switch (expr1){
case expr2:
statements;
break;
case expr3:
statements;
break;
default:
statements;
break;
}
(1) expr1只能是整数型的值或enum枚举类型的常量值,包含byte,short,int,char,不能是字符串或对象,也不能是long型的值。
(2) 变量或表达式不与任何case值相匹配时,则执行缺省符中的程序代码。(与default位置无关)
(3) 若没break语句作为结束句,则程序继续执行到下一个CASE,而不检查case表达式的值。
for 循环
for(int I; i<10; i++)
for 语句中的三个部分都可以省略,但不建议这么做
while 循环
do 循环
do {
语句或块;
}while (布尔测试);
do循环与while循环的不同之处在于,前者至少执行一次,后者可能一次都不执行。
特殊循环流程控制:
break:用来从switch语句,循环语句,和预先给定了label的块中退出,跳出离break最近的循环。
continue:用来略过并跳到循环体的结尾,终止本次循环,继续下一次循环。
label:标识需要转换到的任何有效语句,被用来标识循环构造的复合语句。
八.什么是按值传递?什么是按引用传递?哪些是按值传递?哪些是按引用传递?
按值传递传递的是值的副本,如果方法修改了该参数,仅改变副本,而原始值保持不变。
按引用传递指的是在方法调用时,传递的参数是按引用进行传递,其实传递的是引用的地址,也就是变量所对应的内存空间的地址。因此,如果方法修改了该参数,调用代码中的原始值也随之改变。
例:public class PassTest
{
float ptValue;
public void changeInt (int value)
{ value = 55; }
public void changeStr (String value)
{ value = new String ("different"); }
public void changeObjValue (PassTest ref)
{ ref.ptValue = 99f; }
public static void main (String args[])
{ String str;
Int val;
PassTest pt = new PassTest ();
val = 11;
pt.changeInt (val);
System.out.println ("Int value is: " + val);
str = new String ("Hello");
pt.changeStr (str);
System.out.println ("Str value is: " + str);
pt.ptValue = 101f;
pt.changeObjValue (pt);
System.out.println ("Current ptValue is: " + pt.ptValue);
}
}
这个程序最后输出的结果将是:
11
Hello
99f
|
|