java学习笔记

来源:互联网 发布:socket网络通信流程 编辑:程序博客网 时间:2024/04/29 23:04

递归:在方法内部对自身进行调用

聚合关系:XX是XX的一部分

面向对象:

1.

有哪些类,哪些对象

2.

每种类每种对象具有的属性和方法

3.

类和类之间具备什么关系

JAVA标示符命名规则:

1.标示符由字母,下划线,美元符号,数字组成

2.标示符由字母,下划线,美元符号组成

3.标示符大小写敏感,长度无限制

标示符不可以为关键字 例如:class,static

标示符中间不可以有空格 例如:Hello World

JAVA关键字:全部为小写

字符常量:单引号引起‘a’

字符串常量:双引号引起"aaaaa"

double d1,d2,d3=0.123

d1=0.0;d2=0.0 ;d3=0.123;

string :字符串类型

JAVA变量分类:

按变量的位置划分:

局部变量:方法或数据块内部定义的变量(包含方法参数:args)

成员变量:


凡是在大括号里面声明的变量出了大括号就没人认识了

按数据类型划分:

基本数据类型:四类八种

逻辑性:boolean

文本型:char(2)

整数型:int (4)   long(8)  short(2)byte(1)

浮点型:float(4)  double(8)

引用数据类型:

汉字编码使用的是JBK

基本数据类型的转换:

布尔类型不可以转换为其他类型

整型,字符型,浮点型之间的转换:

容量小的自动转换为容量大的  int<long<float<double

byte ,short,char之间不会互相转换,先转换为int类型

容量大的转为容量小的要强制转换

多种数据混合运算都要转为容量大的

实数常量(2.1)默认double

整数常量(123)默认int





字节型,表示为byte,在java中占一个字节;表示数的范围:其中一位用来表示符号(+/-)-128~~127

  整型,表示为int,在java中占四个字节;

  长整型,表示为long,在java中占八个字节;

  短整型,表示为shot,在java中占两个字节。

  比如说,实数型又包含了:

  单精度浮点型,表示为float,在java中占四个字节;

  双精度浮点型,表示为double,在java中占八个字节

浮点数默认是double类型。
  如果想使用一个float型的浮点数,应该在浮点数后添加F或f。
  推荐使用double型的浮点数。

线程同步的方法的使用。
  sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常。
  wait():使一个线程处于等待状态,并且释放所持有的对象的lock。
  Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。
  notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切地唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。
  2.Exception与Error的区别在哪里?
  Exception表示需要捕捉或者需要程序进行处理的异常。
  Error表示系统级的错误和程序不必处理的异常,
  3.一个类被声明为final类型,说明这个类的性质。 
  表示该类不能被继承,是顶级类。

  4.stack和heap的区别在哪。Bihuman云计算培训中心。
  stack:是自动分配变量,以及函数调用的时候所使用的一些空间。地址是由高向低减少的。
  heap:是由malloc之类函数分配的空间所在地。地址是由低向高增长的。 
  5.谈谈finally, final的区别。
  finally—异常处理时提供finally块来执行任何清除操作。如果抛出一个异常,那么相匹配的catch子句就会执行,然后控制就会进入finally块(如果有的话)。
  final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定 初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。

接口的特点

  1、Java接口中的成员变量默认都是public,static,final类型的(都可省略),必须被显示初始化,即接口中的成员变量为常量(大写,单词之间用"_"分隔)

  2、Java接口中的方法默认都是public,abstract类型的(都可省略),没有方法体,不能被实例化

  3、Java接口中只能包含public,static,final类型的成员变量和public,abstract类型的成员方法

  4、接口中没有构造方法,不能被实例化

  5、一个接口不能实现(implements)另一个接口,但它可以继承多个其它的接口

  6、Java接口必须通过类来实现它的抽象方法

  7、当类实现了某个Java接口时,它必须实现接口中的所有抽象方法,否则这个类必须声明为抽象类

  8、不允许创建接口的实例(实例化),但允许定义接口类型的引用变量,该引用变量引用实现了这个接口的类的实例

  9、一个类只能继承一个直接的父类,但可以实现多个接口,间接的实现了多继承.

  六.Java接口和Java抽象类区别面向对象设计的重点在于抽象。抽象类与接口都位于继承树的上层。

  相同点:

  1、代表系统的抽象层,当一个系统使用一颗继承树上的类时,应该尽量把引用变量声明为继承树的上层抽象类型,这样可以提高两个系统之间的送耦合2、都不能被实例化3、都包含抽象方法,这些抽象方法用于描述系统能提供哪些服务,但不包含方法体不同点:

  1、最大的一个区别,就在于Java抽象类可以提供某些方法的部分实现,而Java接口不可以;这大概就是Java抽象类唯一的优点吧,但这个优点非常有用。

  可以向抽象类里加入一个新的具体方法,所有的子类都自动得到这个方法;但Java接口里加入一个 新方法,所有实现这个接口的类就无法成功通过编译,必需手动给每个实现了该接口的类加上该方法的实现;

  2、抽象类的实现只能由子类给出,也即该实现只能在抽象类定义的继承的等级结构中;所以抽象类作为类型定义工具的效能大打折扣。

  Java接口,任何一个实现了一个Java接口所规定的方法的类都可以具有这个接口的类型,而一个类可以实现任意多个Java接口,从而这个类就有了多种类型。

  以上看出:Java接口是定义混合类型的理想工具,混合类表明一个类不仅仅具有某个主类型的行为,而且具有其他的次要行为。

  3、结合1、2点中抽象类和Java接口的各自优势,具精典的设计模式就出来了:

  声明类型的工作仍然由Java接口承担,但是同时给出一个Java 抽象类,且实现了这个接口,而其他同属于这个抽象类型的具体类可以选择实现这个Java接口,也可以选择继承这个抽象类,也就是说在层次结构中,Java 接口在最上面,然后紧跟着抽象类,这下两个的最大优点都能发挥到极至了。这个模式就是“缺省适配模式”。

  在Java语言API中用了这种模式,而且全都遵循一定的命名规范:Abstract +接口名。

  七.使用接口和抽象类的总体原则:

  1、用接口作为系统与外界交互的窗口站在外界使用者(另一个系统)的角度,接口向使用者承诺系统能提供哪些服务,站在系统本身的角度,接口制定系统必须实现哪些服务,接口是系统中最高层次的抽象类型.通过接口交互可以提高两个系统之间的送耦合系统A通过系统B进行交互,是指系统A访问系统B时,把引用变量声明为系统B中的接口类型,该引用变量引用系统B中接口的实现类的实例。

  public interface B { }

  public class C implements B { }

  public class A { B a = new C(); }

  2、Java接口本身必须非常稳定,Java接口一旦制定,就不允许随遇更加,否则对外面使用者及系统本身造成影响3、用抽象类来定制系统中的扩展点,抽象类来完成部分实现,还要一些功能通过它的子类来实现




0 0
原创粉丝点击