第一章
java的核心优势:跨平台/可移植性
java的三个版本:
javaSE(Java Standard Edition):标准版,定位于个人计算机上的应用。
javaEE(Java Enterprise Edition):企业版,定位于服务器端的应用。
javaME(Java Micro Edition):微型版,定位于消费性电子产品的应用上。例如微波炉系统。注意的是安卓开发与ME是两个完全不同的东西。
ME是SE的内伸,包含J2SE的一部分核心类,也有自己的扩展类,增加了适合微小装置的类库,javax.microedotion.io.*等。
java提高运行效率的一个发展技术:JIT(just in time),即时编译技术,将一些“热点”字节码编译成本地机器码,并将结果缓存起来,在需要的时候重新调用。
Java程序的运行机制:Java首先利用文本编辑器编写java源程序,源文件的后缀是.java,再利用编译器javac将源程序编译成字节码文件,后最是.class,最后利用虚拟机(解释器,java)解释执行。
一个虚拟的用于执行bytecoed字节码的“虚拟计算机”。
jre:(java runtime environment)包含java虚拟机、库函数、运行java应用程序所必须的文件。
jdk:(java development kit)包含了jre,以及增加编译器和调试器等用于程序开发的文件。
java安装后的三个重要的目录:
bin:二进制文件所在目录
lib:类目录
src.zip:jdk源码包
第二章
单行注释://
多行注释:/* … /,多行注释不能嵌套使用。
文档注释:/* … /,后期写项目时,可以生成项目的api,则个在eclips中打 /* 然后回车就可以了。
注释不会出现在字节码文件中。
public class 类名称 {文件名必须与类名一样,一个文件中只能有一个类}
class 类名称 {可有多个类,编译出来后会将多个类编译出不同的文件}。严格上标准中一个文件中只有一个类。
public static void main(String[] args){主方法}
标识符:使用来给变量、类、方法以及包进行命名的,使用规范:1.标识符必须以字母、下划线、美元符号$开头。2.标识符其他部分可以是字母、下划线、美元符号和数字的任意组合。3.java标识符大小写敏感且长度无限制。4.标识符不可以是java的关键字。
建议:标识类名的标识符:每个单词的首字母大写,如:Man,GoodMan
表示方法和变量的标识符:第一个单词小写,从第二个单词开始首字母大写,称为“驼峰原则”。
变量的本质:代表一个“可操作的存储空间”,空间位置是确定的,但是里面放置了什么值是不确定的,我们可以通过变量名来访问“对应的存储空间”,从而操作这个存储空间所存储的值。
java是一个强类型语言,每个变量都必须声明其数据类型,变量的数据类型决定了变量占据存储空间的大小。
变量作为程序中最基本的存储单元,其要素包括变量名、变量类型和作用域。变量在使用前必须对其进行声明,,声明后才会为其分配相应长度的存储空间。
变量分三类:1.局部变量local variable,方法或语句块内部定义的变量,生命周期是从声明位置开始到方法或语句块执行完毕位置。2.成员变量也叫做实例变量member variable,方法外部、类的内部定义的变量。从属于对象,生命周期伴随对象始终。3.静态变量,也称之为类变量static variable,使用static定义,从属于类,生命周期伴随类始终,从类加载到类卸载。
常量:constant,通常指一个固定的值,例如1,2,3,‘a’,‘b’,true,false等等。在java中通常利用关键字去定义一个常量,常量一旦被初始化之后不能更改其值。final type varName = varValue;
一般来讲,1,2,3,‘a’,‘b’,true,false等等这种称之为字面常量,用final定义的称之为符号常量。
基本数据类型:primitive data type
引用数据类型用来代表对象的地址。基本数据类型不牵扯到内存分配,引用数据类型要开发者为其分配空间。
选择数据类型的原则:整数就使用int,小数就用double,描述时间日期数字或者表示文件或内存大小使用long,要实现内容传递或编码转换使用byte,实现逻辑控制就用boolean,描述中文就使用char可避免乱码。
内存区分为四块:1.栈:先进先出,存普通属性,基本数据类型如”int i=1;“这种即局部变量,方法参数等。2.堆:存地址,对象占的内存,一般为new的对象,但是class的引用在栈上。3.全局数据区:存static属性。4.全局代码区:存方法。
整形常量、整型变量:
整形的最大:Integer.MAX.VALUE,最小:Integer.MIN.VALUE,最大值加一等于最小值,最小值减一等于最大值。
float尾数可以精确到7位。
如果要比较,java.math包下面有两个有用的类,BigInteger与BigDecimal,这两个类可以处理任意长度的数值,BigInteger实现了任意精度的整数运算,BigDecimal实现了任意精度的浮点运算。
字符型:
String就是字符序列。
布尔类型:
运算符:operator
算术运算符:
int res = ++a;与int res = a++的区别,++a是先自增再赋值给res,a++是先赋值,再自增。
关系运算符:
=是赋值,==是比较。
==和!=是所有(基本和引用)数据类型都可以使用的。
,>= ,< ,<=仅针对数值类型,即:byte,short,int,long,float,double和char。
逻辑运算符:
位运算符:
字符串连接符就是+号,当加号两边有一个为String,它就变成了字符串连接符。
条件运算符:
运算符的优先级:
自动类型转换:指的是容量小的数据类型自动转为容量大的数据类型。这里的容量大小指的不是字节大小。
上图虚线标识转换有可能会失去一部分精度。
强制类型转换:cast
注意:
操作比较大的数时,特别是整数操作,要留意是否溢出。long类型时最好使用大写的L。在会有溢出的时候,一定要在计算结果前就先转换一个的类型。
简单使用Scanner类获取键盘输入:
第三章
流程控制语句:
流程控制语句时用来控制程序中各语句执行的顺序的语句。它分为三类:1.顺序结构:先执行a,再执行b。2.选择结构:如果。。。,则,,,。3. 循环结构:如果。。。,则再继续,,,。
任何的程序软件,都是由“变量、选择语句、循环语句”组成的。
if单选择结构:
if else双选择结果:
if else if else 多选择结构:
switch多选择结构:一般用于多值的判断。
循环结构分为两大类:当型:当boolean条件为true时,反复执行某语句,当boolean为false时才停止循环,例如while与for循环。直到型:先执行某语句,再判断boolean条件,如果为true,再执行某语句,如此反复,直到条件为false时才停止循环,例如do-while循环。
do-while:
while是先判断后执行,do while是先执行后判断。
for循环:是支持迭代的一种通用结构,是最有效、最灵活的循环结构。
括号中有多个初始化或者条件判断、迭代的话,用逗号隔开。
无限循环:相当于while(true)
嵌套循环:在一个循环语句中再嵌套一个或者多个循环。
break:在任何循环语句的主题部分,均可使用break来控制循环的流程,break用于强行推出循环,不执行循环中剩余的语句。
带标签的break与continue:goto关键字很早之前就在程序设计语言之中存在,在java中只作为一个保留的关键字,并没有使用它。
语句块:
方法:一段用来完成特定功能的代码片段,类似于其他语言的函数。
方法里return的作用:结束程序运行与返回值的作用。
方法的重载:overload,在一个类里面有多个方法的名称相同。重载的方法,实际上是完全不同的方法,只是名称相同而已。
递归:基本思想就是自己调自己。