Java基础教程Java的一些基本代码:public公共的protected受保护的default默认private私有的class类static静态的void无返回类型main主要的String字符串args参数System系统的out输出设备print打印Import导入的意思Scanner扫描仪System.in输入else否则Random随机的Arrays排列Return返回Static静态的classpath类路径类别equals相同或相等的人extends继承abstract抽象的double双的strictfp严格,精准throws投assert声称,断言;interface界面;计接口transient短暂的enum列举型别continue继续,连续final最后的,最终的implements实现return返回值synchronized同步的default未履行任务或责任finally异常最终出口volatilefloatinstanceof等于Java内的数据类型:字符:Char(字符型)String(字串符)整数:byte(字节)shot(短整型)Int(整型)long(长整型)实数:Double(双精度)float(浮点型)布尔值:boolean(布尔型)真:true假:false注意:1.单字单引号2.字串用双引号3.数值直接用等号java编程中的基本常识:代码注释加//多行注释/**/\t输出8个空格相当于一个制表位\n换行SetClasspath=.;E:\设置路径\r回车\‘产生一个单引号\“产生一个双引号\\产生一个斜杠使用扫描仪:整型数据输入:in.nextInt()来接收双精度小数输入:in.nextDouble()来接收字符串输入:in.next()来接收一元运算符:i++//先使用后加1++i先对自身加1后使用i--同上二元运算符:(+-*/%)三元运算符:X?Y:Z运算符分为:1.赋值运算符2.算数运算符3.逻辑运算符它可以是一个算术(运算符),也可以是一个(连接符)。强制转换数据类型:在需要被强制转换的值面前加上括号,写上需要强制转换的类型。变量命名的规则:首字母为字母、下划线变量命名的规范:通常第一单词的首字母小写,其后单词首字母大写。java中常用的运算符:,==,!==,=&&//并且||//或!//取反^异或多重if结构:If{}elseif{}elseif{}else{}if嵌套结构:If(条件1){If(条件2){}else{}}switch多分支结构1.Switch结构中小括号里只能出现int类型和char类型2.Case案例的个数可以随便定义但后面一定要跟常量Switch(表达式或某值){case1://案例XXX;//要执行的语句Baeak;//跳出default://默认XXX;Baeak;}while循环语句While(循环条件){循环操作}特点:先判断,再执行do-while循环结构Do{循环操作}while(循环条件);特点:先执行,再判断程序调试1.程序调试的目的?找出缺陷原因,修正缺陷2.程序调试的主要方法?设置断点、单步执行、观察变量3.调试的主要步骤:①猜测出错位置,设置断点②单步运行③观察变量的值④发现问题⑤修正代码,重新运行⑥解决问题for循环结构及break语句for(参数初始化;条件判断,条件为true循环执行;更新循环变量){循环操作}foreach语句for(类型变量名称:数组或集合){循环操作}Break可用于switch结构和循环结构中continue:只能用在循环里continue作用是跳过循环体中剩余的语句而执行下一次循环While(条件){循环操作Continue;}for(inti=0;i10;i++){循环操作If(!口渴){//成立跳出循环Continue;循环嵌套While(条件){循环操作While(条件){循环操作}}//外循环一次,内循环一边JVM内存分析1.栈区(stacksegment)存放函数的参数值,局部变量的值等,在超过这个变量的作用域时就会被系统自动释放存在于JVM内存中的资源。优点:存取速度比堆快。缺点:存在栈中的数据大小与生存期必须是确定的,无灵活性。2.堆区(heapsegment)存放由new创建的对象和数组,JVM不定时查看这个对象,如果没有引用指向这个对象就回收。Scannerin=newScanner(System.in);优点:可以动态分配JVM内存。缺点:要在运行时分配JVM内存速度慢。3.静态区4.代码区认识数组使用数组的方式intarr[];arr=newint[5]arr[0]=32;int[]arr=newint[5];arr[0]=22int[]arr={23,43,45}键盘输入赋值用in.next();接收。数组名.length表示这个数组的长度多维数组Intarr[2][2]={{1,2},{3},{7,8,56}}访问56数组的排序:Arrays.sort(数组名);逆序:for(inti=arr.length-1;i=0;i--){}数组复制:arr[i]=arr1[i];数组的查找算法if(name.equals(arr[i])){}类与对象面向对象的三个基本特征:封装继承多态面向对象的特点:找对象,建立对象,使用对象,维护对象的关系必须使用new关键字创建一个对象使用对象属性(对象名.成员变量)使用对象方法(对象名.方法())类中的属性被称为成员变量(每个对象的属性都不同)类中的方法被称为成员方法(每个对象共享类中的方法)无参无返回publicvoidget(){}无参有返回publicintget(){}有参无返回publicvoidget(stringa){}有参有返回publicintget(inta){}return返回方法指定类型的值(这个值总是确定的)或结束方法的执行构造代码块构造代码块特点:对象一建立就运行,而且优先于构造函数执行作用:给对象进行初始化的构造代码块和构造方法的区别:1.构造方法是给对应的对象进行初始化,2.构造代码块是给所有的对象进行统一的初始化3.构造代码块中定义的是不同对象共性的初始化内容构造函数之间的调用this:看上去,用来区分局部变量和成员变量同名的情况this:就是代表本类对象,this代表他所在函数(方法)所属对象的引用构造函数之间的调用只能通过this语句来完成构造函数之间进行调用时this语句只能出现在第一行,初始化要先执行,如果初始化当中还有初始化,那就去执行更细节的初始化。this()直接调用了同类中的构造函数。Static关键字作用:是一个修饰符,用于修饰成员(成员变量,成员方法)被static修饰后的成员变量只有一份当成员被static修饰之后,多了一种访问方式,除了可以对象调用之外,还可以被类直接调用(类名.静态成员)Static的特点:1.随着类的加载而被加载2.优先于对象的存在3.被所有的对象所共享的4.可以直接被类名所调用存放位置1.类变量随着类的加载而存在于data内存区2.实例变量随着对象的建立而存在于堆内存。生命周期:1.类变量生命周期最长,随着类的消失而消失2.实例变量生命比类变量短,它是随着对象的消失而消失方法注意事项:1.静态的方法只能访问静态的成员2.非静态的方法既能访问静态的成员(成员变量,成员方法)也能访问非静态成员3.静态的方法中是不可以定义thissuper关键字因为静态优先于对象存在,所以静态方法不可以出现this什么时候使用静态1.成员变量的定义:当属于同一个类的所有对象出现共享数据时,需要将存储这个共享数据的成员变量用statiic修饰2.静态方法的定义:当功能内部没有访问到非静态的成员时(对象特有的数据)那么该功能可以定义成静态的3.每一个应用程序都有共性的功能,可以将这些功能进行抽取,独立封装。以使复用4.对象的作用:对象时用来封装数据的,只要这个类里面有非静态的成员时,那对象就必须存在。main方法Main(主函数,主方法)main不是java中的关键字,它是一个特殊的单词,它能够被JVM(java虚拟机)所识别。Java文档注释Javadoc.exe提取文档注释Index.html查看文档注释@aurhor注释作者Version1.0注释版本提取代码:javadoc-d(指定路径)路径–author提取作者–version提取版本提取的文件静态代码块格式:static{静态代码块中执行语句}特点:随着类的加载而执行,并且只会执行一次,并且还优先于主函数。作用:用于给类进行初始化单例设计模式设计模式:针对此类问题最有效的解决方法java有23种设计模式单例设计模式:解决一个类只在内存中存在一个对象如何让一个类在内存中只存在一个对象?1.禁止其他的应用程序,通过此类来创建对象2.既然外部不能通过此类创建对象,我们要用对象,就可以在本类里面创建本类对象3.为了应用程序能够访问到本类里面创建的对象,我们需要对外界提供一种访问方式如何用代码体现出来1.私有化构造方法2.在本类中创建本类对象3.对外界提供访问的方法继承概述继承的概述:1.提高了代码复用性,简化了代码2.让类与类之间产生了继承关系,才有了后面的多态特性的存在注意:千万不要为了获取其他类的功能简化代码,而建立继承关系,必须要类与类之间存在继承关系,继承关系:extends3.子类拥有父类的成员,子类不能拥有父类中被private修饰后的成员4.Java多层继承在多层继承中最下层的子类拥有整个继承体系的成员,最上层的父类里面定义所有子类的共性描述5.Java中不支持多继承,只支持单继承。因为多继承存在安全隐患,当多个父类定义了相同的成员,子类对象不确定运行哪一个。Java保留这种机制,并用了另一方式来体现—多实现。this.变量首先在本类中找所需要的这个变量,如果没有找到再到父类中找。Super用于访问当前对象的父类成员,super.变量直接父类中找所需变量当子类中出现和父类中一样的函数时,当子类对象调用该函数,运行的是子类中的函数,如同父类中的函数被覆盖了一样,这种情况就是函数的另一种特性:重写(覆盖)注意:子类覆盖父类时,必须要保证子类访问权限大于父类,才能覆盖,否则编译出错。静态的函数只能覆盖静态的重载:只看同名的方法的参数列表重写:子父类方法要一模一样有了子父类之后构造函数的特点:在对子类对象进行初始化的时候,父类的构造方法也会运行,那是因为子类的构造函数默认第一行有一条隐式的语句super();对象的转型:对象的向上转型:子类转父类—默认进行父类引用指向子类对象对象的向下转型:父类转成子类—强制进行关键字:instanceof测试左边的对象是否是右边类的实例;如果是返回true不是返回false多态的概述OOP三大特性:封装,继承,多态多态:可以理解为事物存在的多种体现形态多态的体现:父类引用指向子类对象多态的前提1.必须得类与类之间存在关系,可以是继承关系,也可以是实现关系2.必须得有重写多态的好处:大大提高了程序的可拓展性多态的弊端:提高了程序可拓展性,只能用父类的引用,访问到父类中成员,要访问子类成员必须向下转型后才能访问子类成员。多态成员变量的特点:编译期间:参阅的是引用型变量所属的类中是否有调用的方法运行期间:参阅对象所属的类中是否有调用的方法格式:父类类型对象名=new子类类型。调用参数时引用父类类型,就可以往内调任意的子类类型匿名对象匿名对象:没有名字的对象匿名对象的使用方式之一:当对对象的方法只调用一次时,我们可以用匿名对象来完成,比较简化。匿名对象的使用方式之二:匿名对象可以被当做实参传递形式:调用的方法(new对象());Object类一个特殊的类Object:他是java中所有对象的直接或者间接父类,根父类(基类),它里面定义的功能时所有对象都应该具备的有个默