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型。 取值范围和默认值
浮点型:float ,double
提示:
(1) 浮点型的值,如果没有特别指明,默认是double型的。
(2) 定义float型时,一定要指明是float型,可通过在数字后边加F(f)。
(3) 定义double类型时,可以不用指明,默认的就是double型,也可通过在数字后边添加D(d)来表示。
取值范围和默认值
字符型:char 用来标识单个字符,一个char代表一个16-bit的无符号的unicode字符,一个char字符必须包含在单引号内。
取值范围和默认值
转义字符:\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