《java基础笔记》word版.doc_第1页
《java基础笔记》word版.doc_第2页
《java基础笔记》word版.doc_第3页
《java基础笔记》word版.doc_第4页
《java基础笔记》word版.doc_第5页
已阅读5页,还剩111页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java day01=Java - sun公司 1995几个特点:简单,安全,跨平台,面向对象,分布,健壮,解析,高性能,多线程,动态性,体系结构中立安全:允许用户使用指针,不允许操作指针跨平台:C+ : 源码 -(编译)-目标码 -(连接)-可执行文件 目标码:二进制机器码c+中的源码是跨平台的。c+中的指针其实是内存中的编号(地址)一个字节 = 连续的8位二进制位。 1G = 1024*1024*1024JAVA:源码 -(编译)-字节码JAVA是字节码跨平台。搭建Java开发环境: JDK/JRE/JVM什么是JDK:JAVA开发工具包(做JAVA开发是必须下载JDK)什么是JRE:JAVA的运行环境(若只运行JAVA文件只要下JRE就可以了)什么是JVM;JAVA虚拟机JVM(java虚拟机)功能:用来屏蔽不同系统的差异,为上层的字节码提供统一的运行环境。JDK下的bin目录:可执行文件(这些都是开发过程中所要用的命令。如javac ,java)JDK下的JRE目录:BIN目录,LIB目录。这里的BIN目录中放的是运行中用到的命令,LIB目录中放的都是JAR文件,JAR文件中放的都是一写编译好的字节码。打成JAR文件的目的:方便传输。LIB目录下的rt.jar,改文件下放的是JAVA开发的类库JDK下的SRC.ZIP包:放的是rt.jar包中的源码,而rt.jar中放的是对应的字节码。-设置环境变量: JAVA_HOME:代表JDK安装路径 =/opt/jdk1.6.0 d:/a/b/jdk1.6CLASSPATH:系统搜索类的路径 =. (指的是当前目录)PATH:命令的搜索路径 =/opt/jdk1.6.0/bin 或 =$PATH:/opt/jdk1.6.0/bin 或 =$PATH:$JAVA_HOME/bi $PATH: 在原先的PATH基础上加上其它路径-第一个JAVA代码第一步: vi MyFirstJava.java第二步:public class MyFirstJava - 定义一个类public static void main(String args) - 主方法格式固定String name=tangliang; - 定义一个变量为字符串,字符串值用双引号来引起int age=30; -定义一个整数类型值为30System.out.println(my name is:+name); - 输出语句()里是要输出的内容System.out.println(my age is:+age); - JAVA中加号也可以做字符串的链接第三步: javac MyFirstJava.java - 编译源代码文件(跟源文件名) 第四步: java MyFirstJava - 执行字节码文件(跟的是类名)通配符号编译:javac my*.java - 编译以my字母开头的所有java文件带包编译:javac -d . PackageTest.java带包执行:java sd0807.day01.PackageTestPublic被称作为访问修饰符 - 作用是:控制程序的其他部分对该部分的访问级别Class表面JAVA程序中的全部内容是包含在类中的。注意点:1. 一个JAVA源文件只能定义一个public类2. 而且PUBLIC修饰的类名必须同文件名一致(大小写也要一直)3. 可以定义其他非public类.4. 字节码文件与类一一对应,而不是同你的源文件一一对应.5. 可以运行的JAVA方法的文件,一定要包含一个主方法,而且主方法签名是固定的6. 包含主方法的类叫主类,java命令后跟的是主类的名字7. main方法是程序的入口包的定义(目的是确保类名的唯一性)包用来放所写文件的目录.怎么来声明一个包:package SD0807.day01; - 包的定义(可以是0或1行,若声明则必须在java文件第一行)+package SD0807.day01;public class PackgeTestpublic static void main(String args)System.out.println(Package Test!);+带包编译:javac -d . PackageTest.java带包执行:java sd0807.day01.PackageTest若java PackageTest 其实它将类找到了,只是它找到是带包的类,而命令里面是不带包的,所以会报错。为什么执行带包的类要加路径名?(由于JAVA命令的执行步骤)java命令的三个步骤:1,找到类的字节码文件2,加载类-从磁盘中去读取对应的类,到哪里去找就是从(classpath中配置的路径)3,找主方法执行若从网上下一写工具包必须在classpath中配置工具包所在的位置,这样我们就可以使用该工具包想使用中间件,这样classpath必须指向对应的xxx.jar。而在JDK中的rt.jar我们没有配置上,却能用到里面对应的类,因为她自动会去找JRE/lib/rt.jar找。rt.jar / 放在 jdk1.6.0/jre/lib/rt.jar使用api 提供的类,java虚拟机是怎么找到的?就在rt.jar ;里, 即使不设到 CLASSPATH 下虚拟机也能运行;+例子:第一步:(写类)ToolA类: package com.tarena;public class ToolApublic static void main(String args)System.out.println(ToolA);Test类: package com.tarena.day01; public class Testpublic static void main(String args)ToolA t = new ToolA();System.out.println(test);第二步:(编译)javac -d . ToolA.java - 可以编译(生成一个文件夹为com)javac -d . Test.java -直接编译Test.java会出错,因为用到了ToolA类第三步:(把类ToolA打包)jar -cvf abc.jar ./com - ToolA类在包com.tarena 下将产生的abc.jar包放到任意的目录下,这里放到aa目录。第四步:配置ToolA类的classpath=d:aaabc.jar第五步:(编译Test类)javac -d . Test.java - 可以编译第六步:(执行)java com.tarena.day01.Test也可以执行ToolA类java com.tarena.ToolA+找对应类的顺序:1,在当前包下找(所以注意不要在自己的包下创建和JDK中同名的类,这样在调用JDK中同名的类回出错)2,在rt.jar中找3,在 classpath中指定的路径下找+如果自己在本包中定义了一个String类这样下面代码会出错:public class Abpublic static void main(String args)System.out.println(aaaaa);-出现的错误是说主方法没找到。因为main参数中的String类不是JDK中的String类所以上面的main方法不是主方法了,只能是自己所定义的一个普通的类。所以该类在编译的时候不报错,在执行的时候就会出错。+java.lang包下的类,可以不需给出包明,其它的都要给出包名,由于java.long包下的类很常用。-类的导入import: 可以多行。作用导入所要用到的类。java.lang包下的类,可以不需要导入,其它的包中的类都必须导入。怎么导入:import java.util.scanner; - 导入scanner类import java.util.*; - 导入该包下所有的类package xxxxx;(0或1行)import xxxxxxx; (0或多行);class xxxxx (1个或多个但只有一个public class)静态导入:不仅能导入类,还可以导入静态域。两个实际用:1, 对算术函数的导入2, 笨拙的常量+常用命令:Javac - 编译命令Java - 运行命令Javadoc - 生成程序文档,在java 源文件中提取文档注释, 生成程序文档.- 文档注释注释: / 单行注释 (按住 ctrl+/ )就可以注释选中的程序) /* */ 多行注释 /* */ 特殊的多行注释,定义在类之前,类的属性或方法之前, 叫文档注释; javadoc MyFirstJava.java d .docs /将生成的html文件放到当前目录下的docs子目录下;作用:生成JAVA文档.从你的程序代码中提取注释/* */ 后跟的是自由格式文本在自由格式文本中可以使用HTML修饰符: 一定不要使用 , ,因为他们与文档格式发生冲突。类的注释:多行注释的时候很多程序员习惯每行以星号开头,不建议这样做。方法的注释:param - 参数,可以占据多行,可以用HTML标记return - 返回throws - 可能抛出的异常域注释: 只需要对公有域(通常指的是静态常量)建立文档/*The “hearts”card sut*/Public static final int HEARTS=1;通用注释author name - 作者version text - 版本since text - 始于条目deprecatecd text - 对类,方法,变量添加一个不再使用的注释如:deprecated UsesetVisible(true)insteadsee referencesee The Core ava home pageJava day02 -打包 jar 生成/修改 java 归档文件 (.jar) , 跟.zip 一样; jar cvf abc.jar(目标文件) ./abc (把哪一个目录打包成jar文件) -c creat 创建新的jar文件 -v visable 显示出来 -f filename 指定文件名 -x 展开存档中的命名的(或所有的文件 jar cvf abc.jar ./abc / 多了一个清单文件; jar xvf abc.jar / 展开jar文件的内容; 删除com/ 目录结构 留下一个abc.jar ; 将环境变量的CLASSPATH 追加一个 sd0705corejavaabc.jar 就是将压缩文件展开后在根目录下找 .class 文件; rt.jar / runtime 放在 jdk/jre/lib/rt.jar CLASSPATH 使用api 提供的类,java虚拟机是怎么找到的?就在rt.jar ;里, 即使不设到 CLASSPATH 下虚拟机也能运行;只要在这个目录下就能找到; -常用的包;java.lang java的语言包java.awt/java.swing/java.awt.ent 图形开发是要用到的包java.applet 开发小程序用的包什么叫application(应用程序):就是包含主方法的程序。另外的的程序是没包含主方法,必须放到容器里(如嵌入到浏览器里)去执行。java.io 输入输出时要用到。 java中网络开发。java.util java工具包。- 标识符 命名规则: (1) 由字母、数字、下划线、$组成,不能以数字开头; 可以用中文;如: string 中文=abc; 只能以字符、“_”或“$”开头; 字符可以是汉字; (2) 大小写敏感; (3) 不得使用java中的关键字和保留字; (4) Java语句以分号分隔,Java代码块包含在大括号内,忽略空格。标识符 (5) 无长度限制。- 命名习惯(1) 标识符要符合语义信息(2) 包名 所有字母小写(3) 类名 每个单词首字母大写,其它小写 /TarenaStudent(4) 变量和方法: 第一个单词小写,从第二个单词开始首字母大写 /tarenaStudent(5) 常量: 所有字母大写,每个单词之间用 _ 连接 /int MONEY_VALUE = 50;(6) 用以命名类、方法和变量、以及包遵守JAVA的命名规范,类以每个单词都以大写字母开头。 -关键字 Abstract continue for new switch assert default goto package synchronized boolean do if private this break double implements protected throw by e else import public throws case enmum instanceof return transient catch extends int short try char final interface static 等等- 八种数据类型 1,布尔型:boolean 只有false/true两个值(不存在如C+的与整数相互转换) 2,字符类型: char 2字节 16位 (065535) 默认就是无符号的16位整型;只能表示整数;char类型也可以用通用转义字符,但是不能用ASCII码。可以用“u0000”这种格式,因为char型中使用的是unicode编码方式。u0060 四位都是十六进制的;赋值方式:char zhChar=中; char enChar=a;char ucChar=u0060; - Unicode也是一种字符编码方法(其为16进制)int a =0 char b=0 int a =0 char b=u0000 相等char a =0 char b=u0000 char a =8 char b =5+3char a =8 char b =5+3 相等int a =8 char b = 5+3int a=8 char b=5+3字符0与整数0是不相等的,第五组相等。u0061 -表示为au0041 -表示A字符0的编码为:u0048 3,字符串类型:定义:String name=tangliang; - 注意:赋值要有双引号 4,整数类型: byte1字节8位 -128到127-27到27-1java中都是有符号的;没有有符号和无符号的差别; 内存中的存储:正整数: 原码 负整数: 补码= 原码取反+1; 25 原码: 00011001 补码:00011001 -25 先些25的原码:00011001 -取反:11100110 -补码:11100111 内存中8位二进制第八位:0表示正,1表示负 10000000表示的值为-128,过程: 10000000-(减1)-01111111-取反-10000000(2的7次方=128开始第一位为1 则表示负数即-128)short 2字节 16位 -215到215-1 16位的短整型 3276832767(与char比较,char没有负则其范围065535,没有符号位,存储还是同样的) int 4字节32位 -231到231-1 32位的整型(大概-2G到2G) long 8字节64位 -263到263-1 64位的长整型;long a=12343545L(l); /一定要跟上L,大小写都可以,最好用大写;以0x开头就是十六进制; - 二进制与十六进制的转换4对1 以0开头的是八进制; - 二进制与八进制的转换byte bb=(byte)0x771; / 由于范围超出了直接赋值是不可以的但可以强制转换,强转的规则:自动截断高位保留最低的8位; 5,浮点类型 (默认是double,而且是近似存储) float 4字节32位 单精度实数; 224 X 10127 ; 前三个字节存数据,后一个字节存位权; double 8字节64位 双精度实数;java中小数默认是double型:float f = 111.32; - 会出错,因为默认是double型可以写的方式;float f =(float)111.32;float f = 111.32f; - 注意十六进制中f是个值,不是float类型。 float fa =123.4f; - 后面要加上大写或小写的f float fa =123.4E300F; float fa =(float)123.4E300; - 强转后赋值给float变量double d = 333.5double dd = 886.45ddouble dddd= 768.987D注:整型值存放,正数存放原码(二进制码),负数则存放补码(原码按位取反末位加一) 注:浮点型是近似存储的,实型值在存储时会损失精度,所以不要直接比较两个实型值。 系统默认的实型都是double型, 要使用时要在数据后加个f,或者强行转换。强转(占字节数大的类型转到占字节数小的类型)时会放弃高位值只取低位值。 类型转换整数是精确存储浮点类型是近似存储6.枚举类型JDK5以后可以自定义枚举类型:enum SizeSMALL,MEDIUM,LARGE,EXTRA_LARGE; 声明这样一种类型的变量: Size s =Size,MEDIUM;7大数据类型java.math.BigIntegerjava.math.BigDecimal这两个类可以处理任意长度的数值:1, BigInteger 实现任意精度的整数运算2, BigDecimal 实现任意精度的浮点数运算 可以用静态方法valueof()将普通的数值转换成大数值,但不可以用算术运算符来做处理+public class test public static void main(String args) double a=2.0,b=1.1,c=0.9; if(a-b=c) System.out.println(ok!); else System.out.println( 不 ok! ); 答案是:不ok;2.0-1.1=0.8999999. / 是近似存储不是精确存储 取绝对值小于一个很小的数: Math.abs(a-b)-c) short - int - long - float - doublechar - intint - double(数据不会丢失)int - float (数据会丢失)long - double(数据会丢失)long - float (数据会丢失) 其中: char型和int型之间可以相互转换。char和short或byte不能相互转换。char不能表示负数; boolean类型是独立的, 不能和其它类型相互转换; 反之则需要强行转换; 但是自动类型转换也会造成数据丢失: 如 int - float long- float long - double 只是让位数上相等, 但是会丢掉低位的数据;比如:把浮点值赋给整型,就会发生截断(truncation) 注意: 隐式类型转换;(a或b有一个为int) a 运算符 b ,如果a,b中有任意一个是double型,前面运算的结果就是double型, 如果a,b中有任意一个是float型,前面运算的结果就是float型,如果a,b中有任意一个是long型,前面运算的结果就是long型,如果a,b中没有double、float、long型,那么其结果就为int型。java 数据类型:基本类型: 8种 引用类型: 类,接口,枚举,标注 空类型: voidint a=5; 系统会分配连续4个字节的空间: 0000 0000 | 0000 0000 | 0000 0000 | 0000 0101String a=”hello”;/ a 是一个引用 (地址), 不允许对其进行修改; a - 四个字节;存的是地址值 ;指向首地址-“hello”四个连续的存储空间; -写一个person类在其它类中写了person p = new person();p - 在内存中分到4个字节的空间,存放的是地址值。该地址就是后面new person() 产生 的空间。 这样保证了所有的地址都指向合法的位置; 通过p.xxx(); -去访问对象的方法 p.xxxx; - 去访问对象的属性对象: 充满氢气的氢气球,引用是绳子,通过这个绳子找到这个氢气球; 一个绳子只能连着一个气球;一个气球可以由多根绳子连着; 如果没有引用,那么我们就访问不了,虽然它也存在,叫做垃圾。 Java 虚拟机的垃圾回收的机制;String s“hello”; s=null; System.gc(); / 可以建议虚拟机来回收这些垃圾;来提高效率。若有引用p,但没有指向具体的对象。若去访问p就会出现nullpointerException(空指针异常)+编译时:错误 :error(s) 警告: Warning(s)运行时:异常: 错误:Person p = null; - 定义了引用但没有对象; - 访问Person类的name属性;p.age; - 访问Person类的age属性;这个异常,没有对象,不可能访问对象的属性,这在编译的时候不会出错,只有在运行的时候才会出现的异常。 注: 一个对象有多个引用指向它时,一个引用来改变它的值时,其它也改。 一个引用只能指向一个对象;-运算符:表达式: = *= /= %= += -= = = &= = |=a+=3 a=a+3;a*=4 a=a*4;比较符: = -右移 (用符号位填充左侧) -无符号右移(用0填充前面的位置) 位运算: ; 左移相当于乘2的n次方; 右移相当于除于2的n次方;空位补符号位; 移位若大于32,则相当于移动了对32求余的位数,如:45%32 若被操作的数是long类型的则移位值要对64求余例如,-14 (即二进制的 11110010)右移两位等于 -4 (即二进制的 11111100)- 注意:11110010,11111100 都是补码 = 无符号右移动,移出的不管,移进的都补0。 &(与): 按位与经常用来把指定位置0,其它不变;辅助数: 1111 10001; |(或): 把原来指定位置1, 其它位不变; 辅助数: 0000 01110; (异或):异或运算, 经常用来把原数的指定位求反其它位不变;辅助数: 000001110; (取反):按位取反。 对于& | 位与和位或,当两边是的数据类型是byte时是位运算, 若为boolean型则为逻辑运算。 & | 短路运算符, & 是第一个为假则不计算后者, | 是第一个为真不计算后者 + - a+ 与+a的区别。一条语句为 a+ 用+a来代替是可以的(只能使用于变量,不可为常量或数字) 若:b=a+ 相当于b=a;a=a+1; 而b=+a 相当于a=a+1;b=a; 三目运算符: ? System.out.println(43?9:9.99);-补充-运算符优先级别运算符 结合性 ( ) 从左向右! + - new 强制转换从右向左* / %从左向右 从左向右 = instanceof 从左向右= = != 从左向右&从左向右从左向右|从左向右&从左向右|从左向右 ? :从右向左= += -= *= /= %= &= |= = = =从右向左Java day03-块的概念:块:指的是有花括号括起来的若干条简单的语句一个块里面可以嵌套另一个块不能在嵌套的两个块中声明同名的变量。+public static void main(String args) int b=0;int b=0; - 以上代码编译时通不过的 +- 控制语句-if else格式:If(条件).else.If()条件后腰执行多条语句就必须用花括号括起,若只有一条可以不用花括号。-if - else ; else 匹配的是向上最近的if ; 求一个数是不是素数: 循环, 从2到n/2 或 sqrt(a) ;int a=13;/boolean flag=false;for(int i=2;iMath.sqrt(a)/if(flag=true) System.out.println(a 是素数);/if(flag=true)- switch格式: Switch(条件)case 条件值 :.break;case 条件值 :.break;default :.break;-switch中的变量类型只能是byte、 short、int、char, 枚举五种类型;只有遇到break才会退出, 除非到程序末尾;default放在最后和前面有区别, 如果不写break的话,放在最后会自动退出;但是放到开头的话,会继续执行直到遇到break为止; 循环的设计: -For循环for(); outer: in er: 标签只能和break/continue 结合使用;+public static void main(String args) int i=0;aa:while(true)i+;System.out.println(i);if(i10)break aa;+for(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论