superstar

来源:互联网 发布:js显示当前系统时间 编辑:程序博客网 时间:2024/06/10 02:34

day 01

一、从面向过程编程到面向对象编程的思维转变

我们知道所有的计算机程序都是由两类元素组成:代码和数据。此外从概念上将讲,程序还可以以他的代码或是数据为核心进行组织编写。也就是说一些程序围绕“正在发生什么编写“,而另一些程序则围绕”谁将被影响“编写。这两种范型决定程序的构建方法。第一种方法被称为面向过程的模型,用他编写的程序都具有线性执行的特点。面向过程的模型可以认为是代码作用于数据,用c写的程序就是典型的面向过程模型。第二种方法也就是我们现在正在学习的面向对象编程,面向对象编程围绕她的数据(即对象)和为这个数据严格定义的接口来组织程序。面向对象的程序实际上就是用数据控制对代码的访问。corejava就是一门纯面向对象编程的语言。

二、什么是字节码和虚拟机:

字节码是一套设计用来在java运行时系统下执行的高度优化的指令集。该java运行时系统称为java虚拟机(jvm)。jvm其实就是一个字节码解释器。虚拟机将字节码解释成机器码给cpu执行,所以我们在java中通过虚拟机的这种解释执行方式来屏蔽底层操作系统的差异。

jre = jvm+编译器

jdk= jvm+编译器+类库

三、环境变量的设置:

需要新加的两个环境变量

1、java_home:指名jdk的位置。

2、classpath:指名到哪里去找运行时需要用到的类代码(字节码)

原有的环境变量

1、path:指名可执行程序的位置。

2、export :将指定的环境变量声明为全局的。

我们在.bash_profile下的环境变量设置。

java_home=/opt/jdk1.5

classpath=.

path=$path:$java_home/bin:.

注:“.”代表当前目录

当我们把环境变量都配置好了以后在终端敲入”java -version”命令如果出现jdk版本号信息就表示我们环境变量设置成功了。

bin目录下放的是一些jdk命令

四、kate工具的使用

这个就不多做描述了,大家多试试就清楚了

五、我们的第一个java程序

public class myfirstjava{

public static void main(string[] args){

system.out.println(“hello world”);

}

}

注:

1、我们要求类名必须和文件名一致,只不过文件名多了个.java的后坠。

2、main函数是我们整个程序的执行入口所以必须是静态公开的。

编译:javac myfirstjava.java

编译后我们可以看到目录下多了一个myfirstjava.class文件。这就是java编译原文件后生成的字节码文件。

执行:java myfirstjava

将字节码文件交给jvm去解释执行。

思考:

1、为什么编译后不生成可执行文件(注:所有的可执行文件都是机器代码)

2、java的跨平台特性(sun口号 :一次编译到处运行);

六、包结构

为了根据需要将不同的原文件放在不同的目录下我们引入了包。包我们可以看作就是一个存放java原文件的目录。

在源码的基础上声明一个包名:package sd0604

加包后我们用“javac myfirstjava.java –d.”编译后生成的字节码文件就会放在我们指定的包(目录)结构下.

如果我们想指定多级目录那么在目录明之间我们可以用.作为分隔符。

例如:package sd0604.najing.xuanwu

七、corejava中的注释

1、//单行注释

2、/* */多行注释

3、/***/文档注释

文档注释可以由java doc命令单独提取出来生成注释文档。

例:javadoc myfirstjava.java

我们在生成的注释文件中可以打开index入口页面来查看我们刚刚生成的注释文档。

文档注释一般写在类、方法、属性定义之前

前两种注释和c++相同。

注意:1、我们可以用javadoc –help命令来查看该命令的其他用法。

2、同样我们可以用“javadoc –d 路径名”来指定生成文档注释的位置。

3、可以在文档注释中加入html标签来控制生成注释文档的显示格式。

八、jar命令的用法

我们可以用“jar –cvfmn”命令来将文件打包成jar压缩包。

m: 要生成jar包的名字

n: 要压缩文件的文件名(可以是多个文件或一个目录)

生成的jar文件实际上就是一个普通的zip压缩文件

九、计算机编译一个java程序的过程

1、启动jvm

2、通过java_home\jre\lib目录下找到对应的类

3、如果的2不找不到则在环境变量中配置的classpath配置的路径中找类,这就是为什么我们要在classpath中配上当前路径的原因。

十、import声明的作用

当我们要用一个jdk定义好的类时我们需要在java程序中配上该类对应的jar包。(类似于c++中了#include预处理指令)

例:import java.util.*;

这里大家注意一点:由于java.lang.*包中的类是我们编程中经常要使用的,所以这个包下的类我们不用特别用import在程序中声明。但当我们要用到其他包中的类似我们就必须用import声明了。

awt:抽象窗口工具.

如果大家想了解什么包做什么用的话大家课以看看我给大家的api 文档,上面有对所有这些包用法的解释。

十一、java中的垃圾回收器

因为有了垃圾回收器,我们可以不用顾虑对象创建后占用系统资源的问题。我们只用负责对象的创建,而对象销毁和资源释放的问题就可以留给垃圾回收器做了。这里我们需要注意的是垃圾回收器一般只会在内存空间不够的情况下进行资源回收。

十二、java中标识符的命名规则

1、只能以字母、下划线或”$”开头,严格区分大小写,且长度不限。

2、类名的每个单词的首字母大写

3、方法名属性名的第一个单词小写,以后的每个单词首字母大写

4、所有的包结构名字都是小写

5、常量名所有字母大写

注:第一点是必须遵守的,2~5点不遵守也不会出错,但建议大家严格遵守以上命名规范。

十三、java中的关键字和保留字

查书

十四、java中的八中基本数据类型

1.boolean:占1个字节

2.byte:占1个字节

3.short:占2个字节

4.int:占4个字节

5.long: 占8个字节

6.char: 占2个字节(可以用来保存汉字)

7.float: 占4个字节

8.double : 占8个字节

十五、正负数在内存空间中的存放

正数 在内存空间中存发的是源码。

负数 在内存空间中存发的是正数源码对应的补码。

补码:在源码的基础上取反末位加1。

十六、基本数据类型之间的转换

1、正向过程:从低字节到高字节可以自动转换。

byte->short->int->long->float->double

注:boolean不能转。

2、逆向过程:从高字节到低字节用强制类型转换

例:int a = (int)3.12

注:逆向转换将丢失精度。

十七、java中的转义字符

1.表示格式控制的转义字符(如:\n \t)与c++相同。

2.java中用“\u四位十六进制的数字”表是将字符转换成对应的unicode编码。

十八、表达式和流程控制

instanceof():用户判断某一个对象是否属于某一个类的实例。

运算符:单目运算符、双目运算符、位运算符

注:1、>>>是corejava中的位移运算符,表示右移,左边空出的位以0添充。>>右移

2、将一个数右移n位相当于将该数除以2的n次方;

3、将一个数左移n位相当于将该数乘以2的n次方;

4、&&、||是短路运算符(左边条件不符合时不会执行右边的判断)

day02

一、流程控制语句

1、两路分支选择

if else 配对原则:else一定会和离他最近的且没有与别的else配对的if配对;

2、多路分支选择

switch (byte,short,int,char){

casexxx:

break;

casexxx:

break;

default:

}

3、循环结构

3.1for(初始化;条件;调整){语句块} 该结构在知道循环次数的时候使用

初始化语句只执行一次;

判断条件à执行语句块à执行调整à判断条件

for(;;)表示位无限循环

注:for循环中两个分号是不能省略的。

3.2 while(条件){语句块}改结构在不知道循环次数的时候使用

先判断后执行,调整语句在代码块中体现。

while(1)表示为无限循化。

3.3do {语句块}while(条件);同3.2;

唯一的区别是该循环语句代码块至少要被执行一次;

先执行后判断

continue:提前终止本次循环直接进入下一次循环;

3.4 java中的循环标号

labe:for(int i=0;i0){

collections.swap(l,i,j);

}

}

}

}

}

注:其实用的算法就是个冒泡排序。

/******************************************************/

2、实现java.lang.comparable接口,其实就是实现他的

public int compareto(object o)方法;

比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。

其规则是当前对象与o 对象进行比较,其返回一个int 值,系统根据此值来进行排序。

如当前对象>o 对象,则返回值>0;

如当前对象=o 对象,则返回值=0;

如当前对象l=newarraylist();

:表示该集合中只能存放string类型对象。

3、使用了泛型技术的集合在编译时会有类型检查,不再需要强制类型转换。string str=l.get(2);

注:一个集合所允许的类型就是这个泛型的类型或这个泛型的子类型。

4、listl=newarraylist×

必须类型一致,泛型没有多态

5、泛型的通配符

泛型的通配符表示该集合可以存放任意类型的对象。

static void print( cllection c ){

for( object o : c )

out.println(o);

}

6、带范围的泛型通配符

(1)、向下匹配:

表示该集合元素可以为number类型及其子类型(包括接口)

(2)、向上匹配:

表示该集合元素可以为number类型及其父类型

7、泛型方法

在返回值与修饰符之间可以定义一个泛型方法

public staticvoid copy (t[] array,stack sta){…..}

8、不能使用泛型的情况:

(1)、泛型不能用于线程

(2)、不能用泛型来new一个对象

如:t t = new t();

(3)、静态方法不能使用类的泛型。

9、在使用接口的时候指明泛型。

class studentimplementscomparable{…….}


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/