您好,欢迎访问三七文档
JDKJREJVMJDK:JavaDevelopmentKitJava开发工具包JRE:JavaRuntimeEnviromentjava运行的环境JVM:JavaVirtualMachineJava虚拟机JVM是一种规范。就是一个而虚拟的用于执行bytecodes字节码的计算机。.java编译成.class文件执行...某某系统一个源文件只有一个publicclass,但是可以有好几个class,一个class编译成一个.class文件标识符作用:给变量、类和方法命名规则:——标识符必须以字母、下划线、美元符开头。——标识符其他部分可以使字母、下划线、美元符和数字的任意组合。——Java标识符大小写敏感,且长度无限制。——不可以是Java关键字。注:——Java不采用通常语言使用的ASCII字符集,而是采用Unicode这样的标准的国际字符集。Java基本数据类型整数变量:Byte一个字节-127~128Short两个字节-32768-32767Int(integer)四个字节约21亿Long八个字节自定义类BigDecimalInteger.toBinaryString(a);变为二进制字符串Longa=249853483809L;浮点数:Float四个字节Double八个字节BigDecimal字符型两个字节char:unicode编码有0-65535个字符Boolean:一位自动类型转换容量小的数据类型可以自动转换成容量大的数据类型。容量指的是表述的范围(数的范围)。Long可以转换为floatdouble有可能丢失精度。可以将整型常量直接赋值给charbyteshort等类型只要不超过表述范围。强制类型转换用于显式的转换一个数值的类型,在有可能丢失信息的情况下进行的转换,可能造成精度降低或溢出。当将一种类型强制转换成另一种类型,而又超出了目标类型的表示范围,就会被截断成为一个完全不同的值。(!!所以不能这样转换)。运算时类型提升问题Intb;Floatc;Floata=b+c;Intb提升了变量Java是一种强类型语言,每个变量都不必须声明其类型。Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。局部变量:方法或语句块内部定义的变量,变量在使用前必须对其声明实例变量(成员变量):方法外部、类的内部定义的变量,如果不自行初始化成该类型的默认初始值,他会自动初始化成该类型的默认初始值(数值型变量初始化成0或0.0,字符型变量的初始化值是16位的0,布尔型默认值是false)常量Final:只能被初始化一次!!一般大写运算符算术运算符:+,-*,/,%,++,--赋值运算符:=关系运算符:,,=,=,==,!=,instanceof逻辑运算符&&,||,!位运算符:&,|,^(按位异或),~,,,条件运算符:?:扩展赋值运算符:+=,-=,*=,/=Intb=a++先赋值给b,再a+1Doubled=10.3%3,可以d=1.3逻辑与:&&,逻辑或:||,逻辑非!逻辑与和逻辑或采用短路的方法。从左到右计算,如果确定值则不会再计算下去。+字符串连接符,只要+号两边有一个是字符串则变为字符串。控制语句if后面没有括号只保持一行Switch(int或者可以转成int的类型,枚举,JDK7中可以放置字符串)Case:Break;没有break会一直往后执行JDK7新例子Swith(a){Case:“马士兵”...Case:”高琪”}循环:whiledowhileforforreach确定循环时先可以从笨的开始先输出一行一行打再替换成想要的东西比如乘法表:System.out.println(“1*1=1”);System.out.println(“1*2=22*2=4”);.....Break:再任何循环语句的主体部分,均可用break控制循环的流程,break用于强行退出循环,不执行循环中剩余的语句,(break语句还可用于多支结构中)。Continue语句用在循环语句体中,用于终止某次循环过程,即跳出循环体中尚未执行的语句,接着进行下一次是否执行循环的判断。Goto是java的保留字不推荐使用Intcount=0;outer:for(inti=101;i150;i++){for(intj=2;ji/2;j++){if(i%j==0)continueouter;//可以调到外部}}方法(methodfunction)Java的方法类似于其他语言的函数,是一段用来完成特定功能的代码片段,声明格式:[修饰符1,修饰符2...]返回类型方法名(形式参数列表){Java语句;...}形式参数:在方法被调用时用于接受外部输入的数据实参:调用方法时实际传给方法的数据。返回值:方法完毕后返回给调用它的环境的数据返回类型:事先约定的返回值的数据类型,如无返回值,必须给出返回类型voidJava语言中使用下述形式调用方法:对象名.方法名(实参列表)return语句终止方法的运行并制定要返回的数据。Java中进行方法调用中传递参数时,遵循值传递原则。基本类型传递的是该数据本身。引用类型传递的是对对象的引用,而不是对象本身。递归是一种常见的解决问题的方法,即把问题逐渐简单化。递归的基本思想就是“自己调用自己”,一个使用递归技术的方法将会直接或者间接的调用自己。递归结构包括两个部分:——定义递归头。解答:什么时候不调用自身方法。如果没有头,将陷入死循环。——递归体。解答:什么时候需要调用自身方法。APIAPI:Applicationprograminginterfacepackage便于文件管理生成自己的API文档:特殊的注释/***/使用javadoc接受键盘输入Scanner面向对象编程orientedobject组织代码,封装数据面向对象的本质:以类的方式组织代码,以对象的方式组织(封装)数据。对象:是具体的事物类:是对对象的抽象(抽象、抽出像的部分)先有具体的对象,然后抽象各个对象之间像的部分,归纳出类通过类再认识其他对象。方法是从属于类的。内存分析栈:存放局部变量。(自动分配连续的空间,后进先出)堆:存放new出来的对象。(不连续空间)方法区:存放类的信息(代码)、static变量、常量池(字符串常量)等。(也是堆)垃圾回收机制(GarbageCollection)程序员可以通过System.gc(),通知GC运行,但是Java规范并不一定立即运行。Finalize方法,是Java提供给程序员用来释放对象或资源的方法。构造器又称为构造方法constructor构造器用于构造该类的实例。格式如下:[修饰符]类名(形参列表){//n条语句}是一种特殊的方法:1.通过new关键词调用!!2.构造器虽然有返回值,但是不能定义返回类型(返回值的类型肯定是本类),不能在构造器里调用return。3.如果我们没有定义构造器,则系统会自动第一个无参的构造器。如果已定义则编译器不会添加。4.构造器的方法名必须和类名一致。方法的重载(overload)方法的重载是指一个类中可以定义有相同的名字,单参数不同的多个方法。调用时,会根据不同的参数表选择对应的方法。两同三不同:1.同一个类,同一个方法名;2.参数列表不同(类型,个数,顺序不同)只有返回值不同不构成方法的重载。只有形参的名称不同,不构成方法的重载。与普通方法一样,构造方法也可以重载。Static在类中,用static生命的成员变量为静态变量,或者叫做:类属性,类变量——它为该类的公用属性,属于类,被该类的所有实例共享,在类被载入时被显式初始化。——对于该类的所有对象来说,static成员变量只有一份。被该类的所有对象共享!——可以使用对象.类属性来调用,不过一般使用类名.类属性——static变量属于方法区中!用static声明的方法为静态方法——不需要对象,就可以调用(类名.方法名)——在调用该方法时,不会讲对象的引用传递给它,所以在static方法中不可访问非static的成员。This普通方法中,this总是指向调用该方法的对象。构造方法中,this总是指向正要初始化的对象。This不能用于static方法。面向对象三大特征继承封装/隐藏多态——为了适应需求的多种变化,是代码变得更加通用。子类继承父类,可以得到父类的全部属性和方法(除了父类的构造方法)。Java中只有单继承。方法的重写(override)在子类中可以根据需要对从基类中继承来的方法进行重写。重写方法必须和被重写方法具有相同方法名称、参数列表和返回类型。重写方法不能使用比被重写方法更严格的访问权限。(由于多态)Object类Object类时所有Java类的根基类如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类重写:toString()方法:——默认返回:报名+类名+@+哈希码——可以重写Object中Equals比较两个对象是否相等Super关键字super是直接父类对象的引用。可以通过super来访问父类中被子类覆盖的方法和属性。普通方法:没有顺序限制,可以随便调用构造函数中:任何类的构造函数中,若是构造函数的第一行代码没有显式的调用super(。。),那么Java默认都会调用super();作为父类的初始化函数。Is-a关系采用继承Has-a关系使用组合Final关键字修饰变量:常量修饰方法:该方法不可被子类重写。但是可以被重载!修饰类:修饰的类不能有子类,不能被继承。封装同一个类同一个包中子类所有类Private*Default**Protected***Public****多态父类的引用指向子类的对象Animala=newCat();多态主要是用来实现动态联编的,换句话说,就是程序的最终状态只有在执行过程中才被决定而非在编译期间就决定了。这对于大型系统来说能提高系统的灵活性和扩展性。引用变量的两种类型——编译时类型(模糊一点,一般是个父类)——运行时类型(运行时,具体是那个子类就是哪个子类)多态3个必要条件:要有继承、要有方法重写、父类引用指向子类对象。抽象类是一种模板模式。抽象类为所有子类提供了一个通用模板,子类可以在这个模板基础上进行扩展。通过抽象类,可以避免子类设计的随意性。通过抽象类,我们就可以做到严格限制子类的设计,是子类之间更加通用。要点:有抽象方法的类只能定义成抽象类。抽象类不能实例化,不能new出来。抽象类可以包含属性、方法、构造方法。但是构造方法不能用来new实例,只能用来被子类调用。抽象类只能用来继承。抽象方法必须被子类实现。接口(interface)方法中没有实现只有声明内部类内部类使用场合:通常内部类只为所在的外部类提供服务。java内部类:普通内部类(成员内部类)——静态内部类——非静态内部类匿名内部类方法内部类内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的class文件,但是前面冠以外部类的类名和$符号。内部类可以使用修饰符(public,protected,defalut,private)成员内部类的基本用法:(普通内部类)——成员内部类就像一个成员变量一样存在外部类中——成员内部类可以访问外部类的所有成员(包含:private的)——成员内部类的this值内部类对象本身。要拿到外部类对象可以使用:外部类名+.this——成员内部类不能有静态成员成员内部类的创建方式:——外部类内部Innerinner=newInner()——外部类外部Innerinner=newOuter().newInner();方法内部类——方法内部类的地位和方法内的局部变量的位置相似因此不能修饰局部变量的修饰符也不能修饰局部内部类——方法内部类只能在声明的方法内是可见的因此定义局部内部类之后,想要用的话就要在此方法内直接实例化——方法内部类不能访问定义它的方法内的局部变量,除非这个变量定义为final本质原因:局部变量和方法内部类声明周期不一致所致!——方法内部类只能包含非静态成员!匿名内部类的基本方法:——匿名内
本文标题:java300笔记
链接地址:https://www.777doc.com/doc-2880304 .html