java----类
sql-----表
#######################################
String在java中不属于关键字,String是一个类名。
当然可以作为变量名。
this关键字是代表当前对象的引用
this有两种使用情况,一种就是直接使用“this.属性名”或者“this.方法名()”,
另外一种是“this()”。
HashMap集合可以存储null值和null键
HashMap底层数数组+链表/红黑树的键值对结构,可以存储null值与null键。
HashMap实现Map接口,它允许任何引用类型的键和值对象,并允许将null用作键或值
HashMap 允许插入键为 null 的键值对。但是因为无法调用 null 的 hashCode()
方法,也就无法确定该键值对的桶下标,只能通过强制指定一个桶下标来存放。
在HashMap中添加key==null的Entry时会调用putForNullKey方法
HashMap本身是一个线程不安全的容器(Map),
也就是使用场景局限于单线程环境,因此存储null键null值 通常不会有什么问题
hashmap根本就不检查value所以value为空不为空 一点关系都没有
允许为空是说明允许一个key为空
map使用key进行索引查value. 如果key皆为null, 那全部资料都在同一个位置, 根本无法产生map.
在物件程序中, null代表无物件, 所以无法进行任何相关操作. 你如果是没有值, 可能要考虑定义表示为空之值, 而不能用null替代.
如果你不需要key, 就用Array之类的.
分支结构switch(expr),若jdk为jdk1.8,那么expr可以是Integer ,int,String
Integer是因为可以自动拆装箱
String类 下
int indexOf(int ch)
返回指定字符在此字符串中第一次出现处的索引。
int indexOf(int ch, int fromIndex)
返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。
int indexOf(String str)
返回指定子字符串在此字符串中第一次出现处的索引。
int indexOf(String str, int fromIndex)
返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。
在JAVA的异常处理模型中,能单独和finally语句一起使用的是
try代码块用于存放可能会发生异常的代码,
也写成try-catch
或try-finally
或try-catch-finally的结构
catch用于匹配预定的异常,
如果匹配到,就执行预先设计好的解决方案throw是一个用于抛出自定义异常的关键字throws可以用来在方法定义上抛出本方法可能会抛出的异常,
如果有多个,使用逗号分隔
final关键字可以修饰
常量,方法,类
不可以修饰变量
如果某异常继承 RuntimeException,则该异常可以不被声明,
Throwable
/
Exception Error
/
RuntimeException(这种异常是错误结果直接可见的,不会报错,也不用专门告诉使用者)
为什么RuntimeException可以允许不被catch呢?
首先我们可以看看RuntimeException都有哪些子类型:
1 NullPointerException,这个不用多说了。
2 NumberFormatException,字符串转化成数字时。
3 ArrayIndexOutOfBoundsException, 数组越界时。
4 StringIndexOutOfBoundsException, 字符串越界时。
5 ClassCastException,类型转换时。
6 UnsupportedOperationException,
该操作不支持,一般子类不实现父类的某些方法时。
7 ArithmeticException,零作为除数等。
8 IllegalArgumentException,表明传递了一个不合法或不正确的参数
可以看到大多数错误并不是由于程序本身有问题,而是运行时输入在某些case下导致的,有更多的不确定性。
而且Java开始的时候并没有异常处理机制,所以从兼容性到实现代价来讲就设计成这个样子了。
异常的继承结构中,父级是Throwable,下一级才是Error与Exception我们可以选择抛出异常
异常不能直接抛给main()因为调用main()的是JVM,没人处理
为什么Java中的静态 方法 不能是 抽象的:
static静态方法又叫类方法,意义在于不用实例化对象即可直接调用,
而abstract 修饰的抽象方法,是没有方法体的,本身没有任何意义,它
的价值在于被继承重写,但是重写是基于对象的。
所以这两者从最基本的概念都是冲突的。
String类的indexOf:
返回指定字符在字符串中第一次出现的索引
如果一个类中出现了一个抽象方法,这个类必须被定义成抽象类
抽象类中可以全是普通方法
(我只是不想让别人可以直接通过这个类的对象调用里面的方法)
抽象类中有构造方法,但构造方法不能用于创建本类对象
方法名称必须相同,参数列表必须不同(包括类型,个数和顺序)
重载的参数列表不同,重写的参数列表必须相同。
静态是不存在重写这样的概念的
#######################################
java类先继承后实现
char底层是一个数字(0~655635)
但String是类对象
java enum枚举(隐藏的基本类型)
enum 修饰的变量 —> 相当于public static finally修饰变量
public static finally---->常量
finally—>不可变
Java总允许在方法的后面使用throws关键字对外声明该方法有可能发生异常
public void method()throws Exception{
。。。
}
throw 语句抛出一个自定义错误。
{
。。。
throw new MYEXCEPTION();
}
↑
CLASS MYEXCEPTION()EXTENDS EXCEPTION
{
@OVERRIDE
…
…
}
外键约束—多表场景下
表A uid 1 2 3
表B userid 3
select * from A where A.uid = B.userid
在表二中设置一列用来表示与表一的关系