您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > linux/Unix相关 > java学习笔记
Java学习笔记Java概述java语言是解释执行,java源码是通过编译生成一种特殊的.class的中间字解码文件,然后再有JVM进行解释执行。java语言对指针进行了上层的封装,它保证能够通过这个指针(引用)来访问有效的内存单元。java语言不允许多继承,使继承关系成树装图,每个类都只能由一个父类。java语言的开发效率高,但执行效率低。(相当于c++的55%)java的垃圾回收机制,在java中new的对象不需要向c++一样进行delete操作,JVM会根据情况回收垃圾对象。(懒汉机制,等待资源没有的时候才回收)我们只能够建议JVM进行垃圾回收,例如(System.gc()RunTime.gc()这两个方法就是建议JVM进行垃圾回收的方法)JDK,java开发工具包(类库和运行命令),JRE,java运行环境,JVM,java虚拟机(解释执行的核心,对字节码进行翻译成运行环境的机器码,它可以屏蔽平台差异。JVM是不跨平台的。)JAVA_HOME,指明JDK安装的位置,CLASSPATH,指明类文件的位置,PATH,指明命令的可执行文件的位置。java源文件的文件名必须和文件中定义publicclass的类名(大小写页要相同)相同。java源代码中的main方法的定义写法。main方法是程序的入口。publicstaticvoidmain(String[]args){System.out.println(Helloworld);}java源文件也要先编译,使用javacxxx.java格式的命令得来编译,使用javaxxx来运行。定义包结构要放在有效代码的第一行,packagexxx.xxx,包的定义在一个程序中只能由一个,在加上包定义之后编译可以使用javac-d路径xxxx.java,这个-d这个命令行的参数可以指定包结构的位置“.”代表当前目录。在运行时要使用类的全名javaxxx.xxx.xxxx用包名以点分隔。运行时要在包结构的上一层目录来运行。java中的注释单行注释//......多行注释/*.......*/文档注释/**........p(换行标签)*/,用javadoc命令可以根据原码中的文档注释生成注释文档(html格式)。文档注释中可以使用html标签。javadoc-d路径(指定注释文档的保存路径)文档注释一般写在类定义之前,方法之前,属性之前。在文档注释中可以用@author表示程序的作者,@version表示程序的版本,前两个注释符号要写在类定义之前,用于方法的注释@param对参数进行注释,@return对返回值进行注释@throws对抛出异常的注释。jar命令用于打一个xxx.jar文件用法:jar{ctxu}[vfm0Mi][jar-文件][manifest-文件][-C目录]文件名...选项:-c创建新的存档-t列出存档内容的列表-x展开存档中的命名的(或所有的〕文件-u更新已存在的存档-v生成详细输出到标准输出上-f指定存档文件名-m包含来自标明文件的标明信息-0只存储方式;未用ZIP压缩格式-M不产生所有项的清单(manifest〕文件-i为指定的jar文件产生索引信息-C改变到指定的目录,并且包含下列文件:如果一个文件名是一个目录,它将被递归处理。清单(manifest〕文件名和存档文件名都需要被指定,按'm'和'f'标志指定的相同顺序示例1:将两个class文件存档到一个名为'classes.jar'的存档文件中:jarcvfclasses.jarFoo.classBar.class示例2:用一个存在的清单(manifest)文件'mymanifest'将foo/目录下的所有文件存档到一个名为'classes.jar'的存档文件中:jarcvfmclasses.jarmymanifest-Cfoo/。一般在使用使用jarcvf文件名.jar文件所在路径(xxx/xxx/xxx.class)也可以压缩一个目录,只要在制定路径是指定为文件夹,jar命令的命令行参数在使用时可以以“-”开头,也可以不用。java程序的运行过程,首先是启动java虚拟机,然后就是去找.class文件,先是从系统的类库中找(系统之会在跟目录下查找,所以需要完整类名),如果找不到的话会去CLASSPATH所设置的目录去找。然后加载到java虚拟机中。系统会在每个java程序中隐含导入了java.lang这个包,import包名,导入包中的类文件。java.lang包,这是一个基础包。java.util包,这个包是工具类的包。java.io包,这个包是用于输入输出操作的java.net包,这个包是用于网络编程。java.awt,java.swing,javax.swing,java.event等包用于图形编程用的包。applactionjava的应用程序,java应用程序中必须有一个main()方法。标识符和关键字Java代码中的“;”、“{}”、“”Java语句以分号分隔,Java代码块包含在大括号内,忽略空格.标识符1)用以命名类、方法和变量、以及包遵守JAVA的命名规范类以每个单词都以大写字母开头。方法和变量第一个字母不大写,其他照旧。2)只能以字符、“_”或“$”开头;3)无长度限制。java中的关键字goto和const在java中虽然不再使用但是还作为关键字存在java中没有sizeof这个关键字了,java中的boolean类型的值只能用true和false,且这两值也是关键字。java语言中没有无符号这个关键字(unsigned)java中的数据类型1)整型byte1字节8位-128到127short2字节16位-2^15到2^15-1int4字节32位-2^31到2^31-1long8字节64位-2^63到2^63-12)浮点类型float4字节32位double8字节64位3)字符类型char2字节16位4)布尔型booleanfalse/true注:1)char是无符号的16位整数,字面值必须用单引号括起来;‘a’2)String是类,非原始数据类型;3)长整型数字有一个后缀为“L”或“l”,八进制前缀为“0”,十六进制前缀为“0x”;4)黙认浮点类型为double;5)float数据类型有一个后缀为“f”或“F”,Double数据类型后可跟后缀“D”或“d“6)char类型也可以用通用转译字符,但是不能用ASCII码。可以用“\u0000”这种格式,因为char型中使用的是unicode编码方式。注:整型值存放,正数存放原码(二进制码),负数则存放补码(原码按位取反末位加一)。注:实型值在存储时会损失精度,所以不要直接比较两个实型值。系统默认的实型都是double型,要使用时要在数据后加个f,或者强行转换。强转(占字节数大的类型转到占字节数小的类型)时会放弃高位值只取低位值。java中的数字数据类型减灾由占字节数小的类型到占字节数大的类型的可以有自动转换,反之则需要强行转换,char型和int型之间可以相互转换。char和short不能像户转换。注意:隐式类型转换;a运算符b,如果a,b中有任意一个是double型,前面运算的结果就是double型,如果a,b中有任意一个是float型,前面运算的结果就是float型,如果a,b中有任意一个是long型,前面运算的结果就是long型,如果a,b中没有double、float、long型,那么其结果就为int型。所有基本数据类型在使用时会事先分配空间,只本身就存在空间中,在传递时,就是值传递,不是引用传递。在类中定义的方法在返回值前加上static修饰符就可以在main方法中调用了。如果不用static那就需要在main方法中创建对象,使用对象来调用对象的方法。publicclassTest{publicstaticvoidmain(String[]args){Testt=newTest();intb=1;intc=2;int[]a=newint[10];t.sqort(a);add(b,c)}publicint[]sqort(int[]a){.......}staticintadd(b,c){.......}}java中的运算符(java的运算符的优先级和结合性和c++相同)System.out.println(3/2)按整型计算得11)=前面是零补零,前面是一补一;2)=无符号右移(强制右移都会移进一),=和=对于负数不一样正数:右移n位等于除以2的n次方负数:变成正数。3)&&短路与,前面为假,表达式为假,后面的操作不会进行,&会对所有条件进行判断。4)||短路或,前面为真,表达式为真,后面的操作不会进行,|会对所有条件进行判断。例:if(a3&(b=a)==0)b赋值if(a3&&(b=a)==0)b不赋值5)instanceof,是用于判断一个对象是否属于某个类型6)java中的求余运算符“%”可以对两个实型变量求余注:按位与是为了让某些位置一,按位或是令某些位置零,按位异或是令某些位取反。注:使用左右位移和无符号右移运算符的使用方法是变量名=位移位数,变量名=位移位数(前两个运算符是不会忽略整形符号位,也称逻辑位移),变量名=位移位数注意:左右位移和无符号右移运算符只能用于整形及其兼容类型(byte,int,short,long)注意:java程序的运行过程,首先是启动java虚拟机,然后就是去找。class文件,先是从系统的类库中找(系统之会在跟目录下查找,所以需要完整类名),如果找不到的话会去CLASSPATH所设置的目录去找。然后加载到java虚拟机中。如果要使用到其他的在JAVA_HOME中没有的类或者是其他公司提供的第三方的。jar(jar包)文件时,要把它的路径及文件名加到CLASSPATH中。java的流程控制控制流if()if()….elseif()…..elseif()….else注意:else只是和其上面的同层的最近的if()来配对。switch(){case'a':……..case1:……break;default:…………}注解:switch()内数据类型为byteshortcharint类型,只有以上四种类型的才可以在switch()中使用。case块中不加break时顺序执行下面的语句。循环语句for(inti=0;in;i++){}while(){}do{}while();-----------注意加分号例子:loop:for(inti=0;in;i++){for(intj=0;jm;j++){if(3==j){breakloop;//--loop为标签只能用在循环语句中,用于循环跳到外层循环}}}辨析:intx,a=6,b=7;x=a+++b++;//----------a=7,b=8,x=13intx=6;x=~x;//----------------6的二进制0110取反得11001再转成补码(取反加一)10111=-7break,跳出本层循环,执行后面的代码,continue,提前终止本次循环,再一次进行循环或循环条件满足或不满足后退出循环。break标签名;continue标签名;这两条语句知识表示跳出有标签的循环和提前终止本次有标签的循环,只能用在循环语句(多层循环嵌套)中,循环嵌套中用于跳到外层循环。注意:for循环在使用时一定要注意不要忘记()中的两个;,死循环的写法for(;;){}或者是用while(true){}注意:System.out.println(...+a)在使用这个语句时,它会将其中非字符串(String)的值转换成字符串(不是所有数据类型都可以的)。java中的数组Array,其包含两个部分,分别是数组的引用和数组的空间两部分。声明数组1)一组相同类型(可以是类)数据的集合;2)一个数组是一个对象;3)声明一个数组没有创建一个对象;4)数组能以下列形式声明:int[]i或inti[]Car[]c或
本文标题:java学习笔记
链接地址:https://www.777doc.com/doc-7028197 .html