java基础笔记

1、 java.util.StringTokenizer也是分割字符串的一个类
2、 字符串和字符研究一下,怎么加减乘除的符号还都不能算字符串呢。
3、 基础类型的没有什么方法,所以别指望char能够用equal方法。
4、 Final这个修饰符可以看一下,为什么被他修饰了之后,在switch中才能作为常量使用啊。
5、 方法里边的局部变量如果要作为返回值返回是需要初始化的。
6、 上来就要执行一次的就用do while
7、 单引号括起来是char,如果是双引号赋值给char会出错,双引号是给string的
8、 出了String的首字母大写,其余基本类型都小写
9、 Java关键字都小写,例如public,class,int,boolean
10、 算术运算符、关系运算符、逻辑运算符
11、 Java类型自动转化发生在不丢失精度的前提下,如将整型赋值给浮点型,则可以自动转换,称为宽化转换;而如果将浮点型赋值给整型,则成为窄化转化,java不会自动转化,需要显示地转化,即前面加括号加类型。
12、 注意:float=3.5是错的,因为,编译器会将3.5当作double,而将double赋值给float是窄化转换,这需要显式地转换,因此需要写成3.5或前面写(float);另一种选择是程序中不用float,遇到浮点型的一律声明为double
13、 Boolea是唯一一个既不能显式也不能自动转换为其他类型的类型。
14、 Char表达式类型可以转化为其他任何数值类型
15、 紧跟在switch关键字后的括号中的表达式的求值结果必须是int型或char型;case标记后的值必须是常量,包括整数常量或字符常量;case后边不必用大括号将其代码括起来。必须用break来终止其后代码的执行。如果case后没有break标记,则该case后的语句执行完还会执行后边的case或default的代码,直至遇到break。
16、 Break用在两种场合,一种是switch;另一种是循环中;break不是之前映像中的终止程序不运行,而是跳转的方法之一,另一种是continue;循环中用break,则程序跳转到循环外的下一条语句继续执行。而continue用在循环中则是不执行这次循环,但是接着继续执行下一次循环,所以在12457等这些跳过执行的程序时比较有用。
17、 Java编译器会校验是否方法的所有路径都返回类型正确的结果。所以只在一个if里写返回return是不对的。
18、 子类覆盖父类的方法,注意子类的覆盖方法唯一允许改变的是可访问性,如private或public。此处注意:子类的覆盖方法的可访问性不可以比超类中对应的方法的可访问性更加严格。例如子类可以覆盖在超类中声明为private的方法并在子类中给它赋予public,但反过来是不可以的。除了改变访问性外,奇他都不能改变。
19、 在一个类中,关键字this两个作用:一是区别类属性与方法形参名或局部变量名;另一个是在构造函数中实现代码的重用
20、 在任何希望调用由超类定义的名为methodname的方法时,使用java关键字super作为方法调用的限定符:super.methodname(arguments),从而实现代码重用。宿四super.method()可以出现在方法中的任何地方,而不必是第一行。
21、 继承是一种要么全部都有,要么全都没有的命题,即如果类Y声明为类X的子类,那么Y不能选择继承X 的那些特征。
22、 Protected是一种只有在超类和子类的关系内才有意义的可访问性修饰符。介于private和public,即声明为protected的的特征可以在子类中直接访问到,而非子类并不能够直接使用。
23、 构造方法不能被继承
24、 Super(arguments)是在子类中调用超类的构造函数,而this(arguments)则是在同类中的构造方法之间的调用。注意通过super(arguments)来调用超类构造函数时必须将其放置在子类构造函数的第一句。
25、 继承中,如果子类省略构造函数,即让系统自动提供无参数的构造函数,此时系统回去其超类中调用超类的无实参的构造函数,而如果此时超类中定义了非默认的构造函数就会导致超类并无默认的无参构造函数,造成子类自动调用超类的默认构造函数失败,从而编译失败。解决此类问题的办法是在编写超类的构造方法时总是显式地提供一个无参的构造函数。
26、 Java不支持多重继承,即不能继承自多个超类
27、 数组有两种初始化方法。数组大小不能改变,即不能扩展;对于例如int,double等基础类型,如果不对数组初始化赋值,那么将会自动为其赋值0等价的值,如int为0,double为0.0;但是对于对象数组就成为null了。
28、 Treemap和hashmap区别:treemap遍历时按键值的升序,而hashmap并不按顺序。
29、 数组里放的可以是基础数据类型或者是引用类型,但是集合类却只能够放置引用类型,所以如果要放置int,直接是不可以的,必须包装成为Integer才可
30、 集合存放的不是对象本身,而是对象的引用,由此,一个对象可以被若干个集合引 用,如果清空一个集合,如果还有别的集合引用了其内的对象,则对象不会被回收;对象被当作垃圾回收的情况是在一个对象失去了所有引用,即没有引用指向它时才会被当作垃圾回收;
31、 创建自己的集合类型有三种方法:1、从零开始设计一个新的集合类,不推荐;2、扩展一个与定义的集合类,优点在于新类本身继承了预定义集合类,本身是个集合类,拥有父类的所有方法和属性,扩展自己需要的或重写自己的即可,但是方法全部公开给外界。;2、封装一个标准集合,即将一个集合对象作为自己定义类的属性,优点在于预定义类的方法不必全部公开给外界,可以自己定那些方法公开,而且可以自己定义方法名称;
32、 重载是一个类内部的同方法名但参数不同;多态是相同方法呈现出不同的性质或状态。
33、 继承与覆盖的结合促进了多态
34、 抽象方法解决了多态中超类方法具体实现没意义,抽象方法前加关键字abstract,包含参数列表的小括号之后没有大括号,而是紧跟一个分号结束;只要一个类包含了一个或多个抽象方法,就必须将整个类声明为抽象类。抽象类中的方法不必都是抽象方法,可以有自己的已实现方法。
35、 除非从抽象类派生的子类实现了它继承的所有的抽象方法,否则这个子类仍然必须声明为抽象类。
36、 抽象类不能被实例化。尽管不允许实例化抽象类,仍然可以声明抽象类型的引用变量,这是使用多台必须的。
37、 抽象类中的具体方法调用同一个类中的抽象方法是可以的
38、 接口的所有方法都隐含是公有的和抽象的,因而在声明方法的时候不必制定这两个关键字,指定了也不会出错;然而如果视图给接口中的方法制定public之外的可访问性将导致错误。
39、 如果希望在指定行为的同时也给出特定的数据结构或者需要在提供抽象行为的同时也希望提供一些具体行为,则此时应该创建抽象类,其余情况应该创建接口。
40、 抽象类里的抽象方法必须声明为abstract,还必须声明为public;而接口里的方法不必使用这两个关键字,因为接口里的方法会自动地被声明为abstract和public。
41、 继承抽象类的类继承了抽象类的属性,只要再加上自己需要的属性即可如果需要的话;而实现接口的类要自己定义数据结构;继承抽象类的类是重写抽象类的方法,如果继承类没有覆盖或重写抽象类的所有抽象方法,那么继承类也必须声明为抽象类即可,即继承类不必重写每一个抽象类的方法;但是接口不同,它必须实现接口所定义的所有方法。
42、 区别多态和转型:多态是子类继承了父类的方法,子类重写了父类的方法,这种情况下就会有多态,接口也行;但是如果子类继承了父类方法,又自己添了自己的方法,那么如果父类引用指向了子类对象,那么父类引用只能访问父类的方法,必须用转型,接口亦是如此。
43、 三种类型的集合中,list和set都实现了Collection,map类型的集合没有实现。所以map类型对象不能赋值给Collection接口,数组也不是一个真正的Collection,也不能赋值给Collection
44、 如果我们以后在操作对象集合的方法时设计为接受一般的Collection引用作为参数,而不是要求传入具体的某种类型的集合,这样的方法会更加通用,客户代码可以自由地传入任何它需要的Collection类型。刚才说的是参数传入的是集合接口,我们也可以将返回集合的类型定义为接口,这样的话,就可以自由改变正在使用的内部集合的类型而不会影响方法签名。方法的形式参数和方法的返回类型可以考虑使用接口,益处多多啊。
45、 Map不是Collection,但是Map接口有一个方法values(),该方法就是能够将map类型的集合转换为Collection,所以实现map接口的treemap或hashmap等都能够通过这个方法实现这个效果。促错哦。
46、 如果定义了一个student类,定义了student类的一个静态变量count,希望该count在每次新new一个student实例的时候就自动加一,那么就可以将该逻辑放在构造函数中,使其自动完成,避免了定义专门的方法来增加count。
47、 静态方法可以在整个类上调用,也可以在该类的实例上进行调用。
48、 静态方法的一个限制是不允许访问类的非静态特征;另一个限制是它们不能被声明为抽象的。
49、 可以利用静态特征来设计实用类,这种类能够提供方便的形式来执行频繁使用的行为而不需要实例化一个对象来执行这些行为。这些类通常完全由静态方法和公有静态变量组成。
50、 Java关键字final可以应用于变量、方法和类。最终变量是只能在程序中赋值一次的变量,在第一次赋值后,变量不能被修改。局部最终变量的声明和赋值可以分开,但其他的最终变量却不允许这样。为了避免这个问题,必须在声明时给类最终变量和实例最终变量赋值。
51、 前面我们提到接口不允许声明变量,但是有一个例外就是:接口可以声明公有静态最终变量作为全局常量。即public static final。类外要注意:类或者接口的public static final变量的命名约定相当不寻常:通常使用全部大写的方式命名这些变量,因而使用下划线(_)来分隔具有多个单词的变量名。如FULL_TIME
52、 声明为final的类不能被继承,声明为final的方法不能被覆盖。
53、 从J2SE5.0开始,可以使用import static的语句,有选择性地导入类或接口的具体静态成员。

你可能感兴趣的:(java,数据结构)