1/74Java基础知识总结-----------------------------------------------------------------------------------------------一:java概述:1991年Sun公司的JamesGosling等人开始开发名称为Oak的语言,希望用于控制嵌入在有线电视交换盒、PDA等的微处理器;1994年将Oak语言更名为Java;Java的三种技术架构:JavaSE—标准版(Standard)。J2SE包含那些构成Java语言核心的类。适合开发桌面应用程序和底层应用程序。同时它也是JavaEE的基础平台。JavaEE—企业版(Enterprise)。J2EE包含J2SE中的类,并且还包含用于开发企业级应用的类,如EJB、servlet、JSP、事务控制。为企业级应用提供了标准平台,简化复杂的企业级编程。JavaME—微缩版(Micro)。包含J2SE中一部分类,用于嵌入式系统开发。专门针对一些小型的消费电子产品,如:手机、PDA、机顶盒Java特点跨平台;一种简单;面向对象;分布式;半编译半解释;健壮;安全;多线程三大特征:封装(把对象的属性和行为结合在一个独立的系统单位内部,尽可能隐藏对象的内部细节,只向外部提供接口)、继承(单继承,从上到下单线发展:在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并可以加入若干新的内容,或修改原来的方法使之更适合特殊的需要,这就是继承。)、多态(一个动作用多个方式展示:即同一个实现接口,使用不同的实例而执行不同的操作)1,JDK:JavaDevelopmentKit,java的开发和运行环境,java的开发工具和jre。2,JRE:JavaRuntimeEnvironment,java程序的运行环境,java运行的所需的类库+JVM(java虚拟机)。3,配置环境变量:让javajdk\bin目录下的工具,可以在任意目录下运行,原因是,将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。环境变量的配置:1):永久配置方式:JAVA_HOME=%安装路径%\Java\jdkpath=%JAVA_HOME%\bin2):临时配置方式:setpath=%path%;C:\ProgramFiles\Java\jdk\bin特点:系统默认先去当前路径下找要执行的程序,如果没有,再去path中设置的路径下找。classpath的配置:1):永久配置方式:classpath=.;c:\;e:\2):临时配置方式:setclasspath=.;c:\;e:\注意:在定义classpath环境变量时,需要注意的情况如果没有定义环境变量classpath,java启动jvm后,会在当前目录下查找要运行的类文件;如果指定了classpath,那么会在指定的目录下查找要运行的类文件。还会在当前目录找吗?两种情况:1):如果classpath的值结尾处有分号,在具体路径中没有找到运行的类,会默认在当前目录再找一次。2/742):如果classpath的值结果出没有分号,在具体的路径中没有找到运行的类,不会再当前目录找。一般不指定分号,如果没有在指定目录下找到要运行的类文件,就报错,这样可以调试程序。4,javac命令和java命令做什么事情呢?要知道java是分两部分的:一个是编译,一个是运行。javac:负责的是编译的部分,当执行javac时,会启动java的编译器程序。对指定扩展名的.java文件进行编译。生成了jvm可以识别的字节码文件。也就是class文件,也就是java的运行程序。java:负责运行的部分.会启动jvm.加载运行时所需的类库,并对class文件进行执行.一个文件要被执行,必须要有一个执行的起始点,这个起始点就是main函数.5、虚拟机生命周期A)启动------》B)运行------》C)销毁编译解释HelloWorld.java-----------》HelloWorld.class----------》机器的字节码1)main()(A)----》2)虚拟机找和java文件名相同的class(classLoading)--》3)加载到虚拟机内存中-4)虚拟机将class文件翻译成当前操作系统能够理解的机器字节码------》5运行程序(B)----》6)虚拟机回收内存----》7)虚拟机销毁----------------------------------------------------------------------------------------------二:java语法基础:1,关键字:其实就是某种语言赋予了特殊含义的单词。保留字:其实就是还没有赋予特殊含义,但是准备日后要使用过的单词。2,标示符:其实就是在程序中自定义的名词。比如类名,变量名,函数名。标识符的命名规则必须以字母、下划线(_)或美元符号($)开头余下的字符可以是下划线、美元符号或任何的字母或数字,长度不限。标识符中不能有空格。不能使用Java中的关键字或者保留字做为标识符Java语言的整形常量默认为int型,声明long型后面需加上l或者L,否则会出错Java浮点型常量默认为double型,如要声明一个常量为float型,则需在数字后面加f或F3,常量:是在程序中的不会变化的数据。4,变量:其实就是内存中的一个存储空间,用于存储常量数据。作用:方便于运算。因为有些数据不确定。所以确定该数据的名词和存储空间。特点:变量空间可以重复使用。什么时候定义变量?只要是数据不确定的时候,就定义变量。变量空间的开辟需要什么要素呢?1,这个空间要存储什么数据?数据类型。2,这个空间叫什么名字啊?变量名称。3,这个空间的第一次的数据是什么?变量的初始化值。变量的作用域和生存期:3/74变量的作用域:作用域从变量定义的位置开始,到该变量所在的那对大括号结束;生命周期:变量从定义的位置开始就在内存中活了;变量到达它所在的作用域的时候就在内存中消失了;数据类型:1):基本数据类型:byte、short、int、long、float、double、char、boolean2):引用数据类型:数组、类、接口。级别从低到高为:byte,char,short(这三个平级)--int--float--long--double自动类型转换:从低级别到高级别,系统自动转的;强制类型转换:什么情况下使用?把一个高级别的数赋给一个别该数的级别低的变量;面试题:char型变量是否可以存储一个中文汉字,为什么?可以。一个char型变量在内存中占2个字节Java中只有值传递面试题:当一个对象被当做参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?值传递。Java编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。运算符号:1)、算术运算符。+-*/%%:任何整数模2不是0就是1,所以只要改变被模数就可以实现开关运算。+:连接符。++,--2)、赋值运算符。=+=-=*=/=%=3)、比较运算符。特点:该运算符的特点是:运算完的结果,要么是true,要么是false。4)、逻辑运算符。&|^!&&||逻辑运算符除了!外都是用于连接两个boolean类型表达式。&:只有两边都为true结果是true。否则就是false。|:只要两边都为false结果是false,否则就是true^:异或:和或有点不一样。两边结果一样,就为false。两边结果不一样,就为true.&和&&区别:&:无论左边结果是什么,右边都参与运算。&&:短路与,如果左边为false,那么右边不参数与运算。|和||区别:|:两边都运算。||:短路或,如果左边为true,那么右边不参与运算。4/745)、位运算符:用于操作二进制位的运算符。&|^(无符号右移)运算符的优先级按操作数多少划分一元操作符二元操作符三元操作符按运算类型划分算术运算符关系运算符逻辑运算符赋值运算符尽量多的使用括号括号优先级别最高(JAVA中的%运算,最终的结果和被除数保持一致,eg.-7%3=-1-7%-3=-27%-3=1)面试题:shorts1=1;s1=s1+1;有什么错?shorts1=1;s1+=1;有什么错?对于shorts1=1;s1=s1+1;由于s1+1运算时会自动提升表达式的类型,所以结果是int型,再赋值给short类型s1时,编译器将报告需要强制转换类型的错误。对于shorts1=1;s1+=1;由于+=是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。5,语句。Ifswitchdowhilewhilefor这些语句什么时候用?1)、当判断固定个数的值的时候,可以使用if,也可以使用switch。但是建议使用switch,效率相对较高。switch(变量){case值:要执行的语句;break;…default:要执行的语句;}工作原理:用小括号中的变量的值依次和case后面的值进行对比,和哪个case后面的值相同了就执行哪个case后面的语句,如果没有相同的则执行default后面的语句;细节:1):break是可以省略的,如果省略了就一直执行到遇到break为止;2):switch后面的小括号中的变量应该是byte,char,short,int四种类型中的一种;3):default可以写在switch结构中的任意位置;如果将default语句放在了第一行,则不管expression与case中的value是否匹配,程序会从default开始执行直到第一个break出现。2)、当判断数据范围,获取判断运算结果boolean类型时,需要使用if。3)、当某些语句需要执行很多次时,就用循环结构。while和for可以进行互换。区别在于:如果需要定义变量控制循环次数。建议使用for。因为for循环完毕,变量在内存中释放。break:作用于switch,和循环语句,用于跳出,或者称为结束。break语句单独存在时,下面不要定义其他语句,因为执行不到,编译会失败。当循环嵌套时,break只跳出当前所在循环。要跳出嵌套中的外部循环,只要给循环起名字即可,这个名字称之为标号。continue:只作用于循环结构,继续循环用的。作用:结束本次循环,继续下次循环。该语句单独存在时,下面不可以定义语句,执行不到。5/74面试题:在JAVA中如何跳出当前的多重嵌套循环?在Java中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的break语句,即可跳出外层循环。6,函数:为了提高代码的复用性,可以将其定义成一个单独的功能,该功能的体现就是java中的函数。函数就是体现之一。java中的函数的定义格式:修饰符返回值类型函数名(参数类型形式参数1,参数类型形式参数1,…){执行语句;return返回值;}当函数没有具体的返回值时,返回的返回值类型用void关键字表示。如果函数的返回值类型是void时,return语句可以省略不写的,系统会帮你自动加上。return的作用:结束函数。结束功能。如何定义一个函数?函数其实就是一个功能,定义函数就是实现功能,通过两个明确来完成:1)、明确该功能的运算完的结果,其实是在明确这个函数的返回值类型。2)、在实现该功能的过程中是否有未知内容参与了运算,其实就是在明确这个函数的参数列表(参数类型&参数个数)。函数的作用:1)、用于定义功能。2)、用于封装代码提高代码的复用性。注意:函数中只能调用函数,不能定义函数。主函数:1)、保证该类的独立运行。2)、因为它是程序的入口。3)、因为它在被jvm调用。函数定义名称是为什么呢?答:1)、为