Java 体系与特点
Java SE:Java Platform,Standard Edition
标准版:各应用平台的基础,桌面开发和低端商务应用的解决方案。
Java EE:Java Platform,Enterprise Edition
企业版:以企业为环境而开发应用程序的解决方案
Java ME :Java Platform, Micro Edition
微型版:致力于消费产品 和嵌入式设备的最佳解决方案
Java 可以做什么?
开发桌面应用程序
银行软件、商场结算软件
开发面向 Internet 的 web 应用程序
门户网站(工商银行)、网上商城、阿里巴巴、电子商务网站
提供各行业的解决方案
金融、电信、电力...
嵌入式开发
移动电话、可视电话、数字机顶盒和汽车导航系统
Java 的特性
一种纯面向对象的编程语言。
一种与平台无关(跨平台)的语言。(它提供了在不同平台下运行的解释环境)
一种健壮的语言,吸收了 C/C++语言的优点。
有较高的安全性。(自动回收垃圾,强制类型检查,取消指针)
Java 技术的两种核心机制
Java 虚拟机(Java Virtual Machine)
JVM 垃圾回收器(Garbage Collection) GC
Java 虚拟机(JVM)
JVM 可以理解成一个可运行 Java 字节码的虚拟计算机系统
它有一个解释器组件,可以实现 Java 字节码和计算机操作系统之间的通信
对于不同的运行平台,有不同 的 JVM
JVM 屏蔽了底层运行平台的差别,实现了“一次编译,随处运行”。
垃圾回收器(GC)
不再使用的内存空间应当进行回收-垃圾回收。
在 C/C++等语言中,由程序员负责回收无用内存。
Java 语言消除了程序员回收无用内存空间的责任。
JVM 提供了一种系统线程跟踪存储空间的分配情况。并在 JVM 的空闲时,检查并释放那些可以被释放的存储空间。
垃圾回收器在 Java 程序运行过程中自动启用,程序员无法精确控制和干预
JDK
JDK(Java Development Kits)-- Java 开发工具集
JRE(Java Runtime Environment)Java 运行时环境
JVM
Java API (应用程序编程接口)
Java 编译器(javac.exe)、Java 运行时解释器(java.exe)、
Java 文档化化工具(javadoc.exe)及其它工具及资源
JRE 的三项主要功能:
加载代码:由类加载器(class loader)完成;
校验代码:由字节码校验器(byte code verifier)完成;
执行代码:由运行时解释器(runtime interpreter)完成。
什么是程序
程序一词来自生活,通常指完成某些事务的一种既定方式和过程 在日常生活中,
可以将程序看成对一系列动作的执行过程的描述
计算机中的程序
为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令(即命令)的集合
Java 程序开发的三个步骤
编写源程序
编译源程序
运行
语法{
注释 :java 程序有三种注释方式
单行注释://注释
多行注释:/*注释*/
文档注释:/**注释*/
语法规则:
java 是严格区分大小写的
java 是一种自由格式的语言
代码分为结构定义语句和功能执行语句
功能执行语句的最后必须用分号结束
变量及数据类型
变量分类:
按所属的数据类型划分:
基本数据类型变量 :8种基本数据类型,所占内存(字节)不同,一个字节最大数量为255
数值型
整数类型(byte1、short2、int4、long8)
浮点类型(非整型)(float4、double8)
字符型(char2)
布尔型
布尔型(boolean1)
引用数据类型变量
按被声明的位置划分:
局部变量:方法或语句块内部定义的变量
成员变量:方法外部、类的内部定义的变量
标识符
Java 对包、类、方法、参数和变量等要素命名时使用的字符序列称为标识符。规则如下:
由字母、数字、下划线(_)和美元符号($)组成。
区分大小。
长度无限制。
不能是 Java 中的保留关键字。
标识符命名习惯:见名知意,不要怕长。
命名规范: 软性建议
类名规范:首字母大写,后面每个单词首字母大写(大驼峰式)。
方法名规范: 首字母小写,后面每个单词首字母大写(小驼峰式)。
变量名规范:全部小写。
类型转换
boolean 类型不能转换成任何其它数据类型。
自动类型转换:容量小的类型自动转换成容量大的数据类型
byte,short,int -> float ->long ->double
byte,short,int 不会互相转换,它们三者在计算时会转换成 int 类型
强制类型转换:容量大的类型转换成容量小的数据类型时,要加上强制转换符
long l = 100L; int i = (int)l;
有可能造成精度降低或数据溢出,使用时要小心。
变量使用、转换
float变量默认浮点数字为double型,需要在浮点数字末端加f方可表示为float型
float f1 = 10.1f;
long变量默认整数数字为ing型,需要在整形数字末端加l放可表示为long型
long l1 = 200000000000l;
char类型使用时加单引号,和ascii码表关联使用
char c1 = 'A';
方法调用
概述:
方法用于封装一段特定的逻辑功能。方法的主要要素有:权限修饰符、方法名、参数列表和返回值。
格式:
权限修饰符 返回值类型声明 方法名称(参数列表){
方法中封装的逻辑功能;
return 返回值;
}
运算符
算数运算符:+、-、*、/、%、++、--
++:
如果是变量前缀:先对此变量加 1,再执行其他的操作。
如果是变量后缀:先执行当前语句的其他操作,再对此变量加 1
--:
如果是变量前缀:先对此变量减 1,再执行其他的操作。
如果是变量后缀:先执行当前语句的其他操作,再对此变量减 1
赋值运算:=、+=、-=、*=、/=、%=
关系运算:==、!=、<、>、<=、>=
逻辑运算符:&(与)、|(或)、^(异或)、!、&&、||
^:两边同时为真或假则假, 两边不同则为真
&、|:需要运算玩两边才得出结论
&&:左边为假则停止运算得出结论为假
||:左边为真则停止运算得出结论为真
字符串连接运算:
String s="He" + "llo"; 结果"Hello"
"+"除了可用于字符串相连接,也能将字符串与其它的数据类型相连成一个新的字符串。
如:String s="x" + 123; 结果"x123"
当"+"两边任意一边为字符串时,结果为字符串相加
三目运算符:
X ? Y : Z
X 为 boolean 类型表达式,
先计算 x 的值,
若为 true,
整个三目运算的结果为表达式 y 的值,否则整个运算结果为表达式 z 的值。
例:
int score = 75;
String type = score >= 60 ? "及格" : "不及格";
进制
二进制
计算机中的数据都以二进制数字保存。
二进制:逢二进一。即只有 0、1 两个值。
如:十进制的 10 在计算机内保存为二进制的 1010
十六进制
二进制表示法太冗长,所以在程序中一般喜欢用十六进制。
十六进制:基数为十六,逢十六进一。它用 abcdef 表示从 0-9 之上的值。
Java 中十六进制数据要以 0x 或 0X 开头。如:0x23D
十六进制转换成二进制只需将每个十六进制数字替换为相对应的四个二进制位即可。
八进制
八进制:基数为八。
Java 中八进制数据要以 0 开头。如:0123
八进制转换成二进制:只需将每个八进制数字替换为相对应的三个二进制位即可。
现在的计算机系统很少用八进制的了。
计算机中信息的存储单位
位(Bit):表示一个二进制数码 0 或 1,是计算机存储处理信息的最基本的单位。
字节(Byte):一个字节由 8 个位组成。它表示作为一个完整处理单位的 8 个二进制数码。
转义字符
\n 换行,将当前位置移到下一行开头
\r 回车 ,将当前位置移到本行开头
\t 水平制表(HT) (跳到下一个TAB位置)
\\ 代表一个反斜线字符''\'
\' 代表一个单引号(撇号)字符
\" 代表一个双引号字符
标识符
Java 对包、类、方法、参数和变量等要素命名时使用的字符序列称为标识符。
规则如下:
由字母、数字、下划线(_)和美元符号($)组成。
不能以数字开头。
区分大小写。
长度无限制。
不能是 Java 中的保留关键字。
命名规范: 软性建议
类名规范:首字母大写,后面每个单词首字母大写(大驼峰式)。
方法名规范: 首字母小写,后面每个单词首字母大写(小驼峰式)。
变量名规范:全部小写。
返回值详解
方法调用结束后可以返回一个数据,称之为返回值。
方法在声明时必须指定返回值的类型。
通过 return 语句返回,return 语句的作用在于结束方法且将数据返回。
如果方法没有返回值(即方法不需要返回数据),需将返回值类型声明为 void。
参数列表详解
方法的参数列表:在调用时传递给方法,需要被方法处理的数据。
在方法定义时,需要声明该方法所需要的参数变量。
在方法调用时,会将实际参数值传递给方法的参数变量。必须保证传递参数的类型和个数符合方法的声明。
执行结构
任何简单或复杂的算法都可以由顺序结构、分支结构和循环结构这三种基本 结构组合而成
它们的共同点是都包含一个入口和一个出口,它们的每个代码都有机会被执行,不会出现死循环。
顺序结构 顺序结构是一种基本的控制结构,它按照语句出现的顺序执行操作
分支结构 分支结构又被称为选择结构,根据条件成立与否来执行操作,
循环结构 循环结构是一种重复结构,如果条件成立,它会重复执行某一循环体,直到出现不满足的条件为止。
分支结构
if 条件语句
if 条件结构是根据条件判断之后再做处理
if(条件语句){…}
if (条件语句){…}else{…}
if (条件语句){…}else if(条件语句){…}
if (条件语句){…}else if(条件语句){…}else{…}
switch 语句
switch(表达式){
case 取值 1: 语句块 1;break;
case 取值 n: 语句块 n;break;
default: 语句块 n+1;break;
}
switch 语句有关规则
表达式的返回值必须是下述几种类型之一:int, byte, char, short,String;
case 子句中的取值必须是常量,且所有 case 子句中的取值应是不同的;
default 子句是可选的;
break 语句用来在执行完一个 case 分支后使程序跳出 switch 语句块;如果 case 后面没有写 break 则直接往下面执行!
Case 后面的执行体可写{ }也可以不写{ }
循环结构
循环语句功能
在循环条件满足的情况下,反复执行特定代码
循环语句分类
for 循环
for(初始化参数;判断条件 ;更新循环变量){
循环体;
}
while 循环
符合条件,循环继续执行;否则,循环退出
特点:先判断,再执行
while(条件表达式){
//语句块;
}
do/while 循环
先执行一遍循环操作,符合条件,循环继续执行;否则,循环退出
特点:先执行,再判断
do {
循环操作
}while ( 条件表达式 );
while 循环和 do-while 循环的区别?
while:先判断条件,如果条件满足,再执行循环操作
do while:先执行一遍循环操作,然后再判读条件,如果条件满足,继续执行循环操作。
数组
格式 1. 数据类型[] 数组名称 = new 数据类型[数组长度];
格式 2. 数据类型[] 数组名称 = {数组内容 1,数组内容 2,数组内容 3...数组内容 n};
格式 3. 数据类型[] 数组名;
格式 3 属于只创建了数组引用名, 并未在内存创建数组空间。
格式 4. 数据类型[] 数组名称 = new 数据类型[]{内容 1,内容 2,内容 3...内容 n};
下标
可以理解为数组中内容的数字序号,从 0 开始 ,对于长度为 n 的数组,下标的范围是 0~n-1。
数组长度获取
数组名称.length
数组的长度在创建时就固定了。
常用算法
一、冒泡排序
原理:
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的 数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
二、二分查找 (折半查找)
数组数据必须采用顺序存储结构有序排列。
重复从中间分两部分查找
小知识
next接收不到空格 (" abc"="abc" "abc def"="abc")
nextline能接收空格
if用于通常判断 switch用于选择