Java基础

一、 Java体系

1、JavaSE(java to standard edition):用于桌面开发、低端商务开发
2、javaEE(Java to enterprise edition):企业级方案的开发,基于web的开发等等
3、JavaME(Java to micro):用于移动电话、电子消费品、嵌入式开发
图中展示了以上三种技术体系分支
Java技术体系所包含的内容

二、Java的特点

与c/c++相比

序号语言角度学习角度
1简单,放弃了对指针的使用迅速入门,学起来简单易学
2目前最好的网络编程语言编写更少更简洁的代码
3开放式先进的技术,可移植性强更快的开发程序
4面向对象语言,完全OO的跨平台语言用Java编写的语言可避免平台相关性
5分布式开发,支持多线程,可靠安全健壮一次编写处处运行 可以更容易的发布

三、面向对象的特征

面向对象的三个原则
①封装性:封装的基本单元是类,类是一个抽象的逻辑结构,而类的对象是一个真实存在的物理实体,类的母的是封装复杂性,在类的内部存在隐藏复杂性的机制
封装的优点:
模块化:可以独立于其他对象的源代码进行编写和维护,可以很容易的将对象在系统之间传递。
隐藏信息:其他对象可以更具本对象提供的一个公共接口进行通信而不影响其他对象。
②继承性:继承是一个对象获得另外一个对象属性的过程。继承是从已有的类中派生出新的类,新的类能吸收已有类的属性和行为,并扩展新的能力也可以使用父类的功能但不能选择性的继承父类。这是的复用以前的代码变得非常的容易能够大大缩短开发周期,降低开发费用。
Java不支持多继承,一个类只能有一个父类,易于管理程序。一个类可以实现多个接口。

③多态性:多态是同一个行为具有不同的表现形式或形态的能力。多态就是同一个接口使用不同的实例进行不通的操作。
多态的定义:指允许不同类的对象对同一消息做出响应。即同一消息可根据同的发送对象而做出不同的行为方式。
在这里插入图片描述
作用:为了消除类型之间的耦合性
多态存在的三个必要条件:
要有继承
要有重写
父类引用指向子类对象

多态的好处:
①.可替换性(substitutability)。多态对已存在代码具有可替换性。例如,多态对圆Circle类工作,对其他任何圆形几何体,如圆环,也同样工作。
②.可扩充性(extensibility)。多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。实际上新加子类更容易获得多态功能。例如,在实现了圆锥、半圆锥以及半球体的多态基础上,很容易增添球体类的多态性。
③.接口性(interface-ability)。多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。如图8.3所示。图中超类Shape规定了两个实现多态的接口方法,computeArea()以及computeVolume()。子类,如Circle和Sphere为了实现多态,完善或者覆盖这两个接口方法。
④.灵活性(flexibility)。它在应用中体现了灵活多样的操作,提高了使用效率。
⑤.简化性(simplicity)。多态简化对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。

三、Java的关键字

1、类访问修饰符
类的修饰符只有public和default两个
public修饰表示其他包的类都可以访问该类
访问修饰符default只有在同一个包的类才可以访问这个类,其他包中的不行
类的构造函数不能用final、abstract、synchronized、native、static等关键字进行修饰
2、成员访问修饰符
Java的成员访问修饰符有4种:public、private、protectde、default
public static==static public
类成员的访问修饰符详细描述如下

publicprotecteddefaultprivate
访问同一个类
访问同一个包中的不同类×
访问在不同包中的父类××
访问不同包中的不同类×××

访问修饰符的访问权限大小public>protected>default>private
3、final关键字
基本用法:
①修饰类:当用final修饰一个类时说明这个类不能被继承,当一个类永远不希望被继承的时候可以使用final修饰。
②修饰方法:被final修饰的方法不能被重写。注意:一个类中private方法会被隐式的指定为final方法。
Java编程思想中有这么一段话:“使用final方法的原因有两个:第一个是把方法锁定,以防任何继承类修改它的含义。第二个原因是因为效率,在早期的Java版本中会将final方法转为内嵌调用。但是由于方法过于庞大可能看不到内嵌调用带来的任何性能提升。在最近的Java版本中不需要使用final方法来进行优化了。”如果只有在想明确禁止 该方法在子类中被覆盖的情况下才将方法设置为final。
③修饰成员变量:对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。final修饰变量不能被修改值。
4、abstract关键字
修饰范围
①类:被修饰的类为抽象类不能被实例化只能作为其他类的父类。abstract不能修饰类的构造函数。类下面的方法可以不都被修饰为abstract,没有修饰的方法需要实现该方法。
②类的方法:修饰方法时它的类也必须修饰为abstract。
③abstract不能与final同时使用
5、static关键字
如果一个类中的成员被声明为static则该成员实际上是一个全局变量。
使用规则如下:
①在Java中只有接口、最外层的类和static inner public才可以定义static变量或方法
②static变量和方法属于它的类,它的类的所有对象都可以访问到它,但是任何一个类的对象对static变量进行修改都直接影响到所有对象。
③只能访问static修饰的类的成员变量和方法
④不能调用this和super

四、变量

1、变量声明
(1)变量名称的命名规则:
①Java中只允许英文字母以及$和_两个非字母作为类和变量名称的首字母
②由多个单词组成的变量名称,除第一个单词首字母小写外其他单词首字母大写
③类名称每个单词首字母大写
④Java约定"_"只用在常量声明的单词之间分割单词
(2)当变量被声明为null是表明该变量没有被初始化即没有被分配内存空间
2、变量的声明范围
变量的声明的位置直接决定了变量的作用范围
(1)类的成员变量:它是一个类的成员(static修饰,所有类的变量即是所有对象公有的一个变量,它的更改将影响到所有的类的对象)或者一个对象的成员(非静态变量,属于类的对象的变量),它在类内,但是是在任何方法和构造函数之外;
(2)局部变量:主要是在类的方法或者代码块中,只在所在方法或类的代码块中起作用
(3)方法的参数:是方法或者构造器中的真实参数,用于向方法或者构造器中传递值。作用范围在所在的方法或者构造器中。
(4)异常处理参数:与参数类似,是异常处理器中的自变量。

五、接口

1、接口可以继承接口,用关键字extend
2、普通类可以实现多个接口,用关键字 implements
3、接口的定义中不能用private和protected,其 default值是public
4、实现类必须实现接口中的所有方法
5、接口中可以定义静态的变量,其格式为:public static final type variableName;

六、构造函数(构造器,constructor)

1、构造函数的作用:在生成类的对象时为其分配一个封闭的内存空间
2、构造函数必须与类名一致,构造函数可以重载
3、不管父类有无构造器,子类在实例化的时候都会调用父类的构造器,所以当父类中存在带参数的构造器是,子类在必须在构造器的第一行声明调用了父类中哪一个构造器。
4、构造器中不返回任何类型,也可以是空方法,也可以给类的变量赋值。
5、在类的继承中子类会默认调用父类的构造器

七、程序控制语句

1、循环控制语句
在Java中循环控制语句主要有:while、do while 、for三种
2、switch语句
3、new运算符
4、++操作符

八、内部类

在这里插入图片描述

九、string和stringbuffer类

1、string和stringbuffer类的区别:string是一个final类,一旦生成对象就不可改变它的值,如果改变就相当于生产了一个新的对象。stringbuffer则可以 创建和操作一组动态字符串,系统可以自动的为其扩展内存以容纳新增的文本。
2、stringbuffer中的 length()和capacity()的区别:length方法返回字符串和字符缓冲区所包含的字符数。capacity返回分配给字符串缓冲区的空间量。
3、string类中的equals和== 是不一样的。equals表示比较的两个字符串中的字符是否一样,而 ==表示操作符两边的字符串变量所指的地址是否相同。
4、①string A=“a”+“b”+“c”
②stringbuffer B=new StringBuffer(“a”);
B. append(“b”). append(“c”);
上面两个语句返回的值都是"abc" 但是①共创建了五个字符对象"a",“b”,“ab”,“c”,“abc”。而②中只创建了三个。节省内存,效率更高。

十、线程

1、定义:它是程序内一个单一的顺序控制流程
2、特点:多个线程可以同时运行,在一个程序内执行不同的任务
3、线程与进程:
都有一个专门的单一的顺序控制流程
线程又被称为轻量级进程
4、创建一个线程的方法:
(1)继承一个Thread,覆盖Thread类中的run()方法
(2)实现Runnable接口
5、线程的几种状态:新建状态、就绪状态、运行状态、阻塞状态、死亡状态

十一、异常处理

1、定义:是编程语言或计算机硬件里的一种机制,用于处理软件或信息系统中出现的异常状况。
2、异常有两种:
(1)运行时异常:在Java运行时系统内发生,如算数异常、指针异常、索引异常
(2)非运行异常:是在Java运行时系统外的代码中产生的异常
3、异常处理是的关键字:try、catch、throw、throws、finally
try:执行可能产生异常的代码块
catch:捕获异常
finallly:无论是否发生异常,代码总被执行
throw:抛出异常,异常的生产阶段,手动抛出
throws:声明异常,异常的处理方式,声明方法可能要抛出的各种异常类
4、异常处理的步骤:
a、 将可能抛出异常的语句封闭在try块中;
b、 然后在catch块中捕获并抛出异常(可以多个);
c、 最后在finally块中释放在try块中资源(可有可无,视情况而定);

try{
  // 程序代码
}catch(异常类型1 异常的变量名1){
  // 程序代码
}catch(异常类型2 异常的变量名2){
  // 程序代码
}finally{
  // 程序代码
}

5、程序中使用异常处理的优点:
a、将错误代码与正常代码分隔开
b、将错误沿调用栈向上传递
c、将错误类型进行分组和区分
6、在一个捕获异常的代码中,必须有try()语句,catch和finallly必须两者取其一或者两个都有,其中catch语句可以有多个,catch捕获异常类型必须是子类在前父类在后。
7、当try、catch、finally都有时,不论在try和catch中是否有return和break都将执行finally中的代码块。
8、在开发时、一般用finally来清除异常发生时的无用内存
9、所有的异常都是从Throwable继承而来的,是所有异常的共同祖先。
(1)Throwable有两个子类,Error和Exception。其中Error是错误,对于所有的编译时期的错误以及系统错误都是通过Error抛出的。这些错误表示故障发生于虚拟机自身、或者发生在虚拟机试图执行应用时,如Java虚拟机运行错误(Virtual MachineError)、类定义错误(NoClassDefFoundError)等。这些错误是不可查的,因为它们在应用程序的控制和处理能力之 外,而且绝大多数是程序运行时不允许出现的状况。对于设计合理的应用程序来说,即使确实发生了错误,本质上也不应该试图去处理它所引起的异常状况。在 Java中,错误通过Error的子类描述。
(2)Exception,是另外一个非常重要的异常子类。它规定的异常是程序本身可以处理的异常。异常和错误的区别是,异常是可以被处理的,而错误是没法处理的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值