Eclipse运用
撤销:Ctrl+z
下一步:Ctrl+y
自动修正:Ctrl+1
全局放大:Ctrl+=
全局缩小:Ctrl+-
替换:Ctrl+f
boolean的返回值只要true与false,作为条件时只需要变量作为条件,不需要赋值
数组和String中的赋值是分配管理权,不是占有权,可以同时有多个管理者
String类型字符串是一种特殊的类型
包裹类型首字母需要大写
String与数字相连接时,会默认把数字当成字符串连接,如果数字相加或者相减不括号,无法进行运算
在String中==与equals的区别
1、==是在比较是否是同一个字符串(比较的两者是同一个东西的管理者才是true)
2、equals是在比较两者的内容是否一致
String常用函数
1、compareTo() //比较字符大小,根据unicode字符编码来判别字符大小
s1.compareTo(s2) //1则s1大,-1则s2大,0则一样大
2、 length() //获得字符串长度
3、charAt() //访问字符
s.charAt(i) //返回s字符串中第i个字符
4、substring() //得到子串,s字符串为例
s.substring(n) //得到从n位置到末尾的全部内容
s.substring(b,e) //得到从b位置到e位置之前的内容
5、indexOf //寻找字符。默认从左边开始找,s字符串为例
s.indexOf(c) //得到c字符所在的位置,返回-1则表示没有找到
s.indexOf(c, n) //从n号位置开始找c字符
从右边开始找则为lastIndexOf()
6、String其他操作 //修改的函数,不能修改其本身,本身输出不会变化,需要将其赋给其他的变量
s.startsWith() //s字符串是不是以某一个字符串开头
s.endsWith() //s字符串是不是以某一个字符串结尾
s.trim() //将s字符串两端的空格删去
s.replace(b1,a1) //将s字符串中所有b1换成a1
s.toLowerCase() //将s字符串全部变为小写
s.toUpperCase() //将s字符串中全部变为大写
7、split() //按第一个参数分离字符串
split是用第一个参数作为标志分开字符串到数组中的函数
第一个参数必须要有,即分开的标志,第二个参数选择性填写
第二个参数为字符串要分开的段数,不填写默认按照第一个参数全部分开
8.contains(a)//字符串里面是否包含a
9.判断素数方法,从完数得到的启发(a为输入进来的数)
for(int i =2;i<=a;i++)
{
if(a%i==0)
{
sum+=i;
}
}
if(sum==a)
{
syso(a);
}
10.成员变量与本地变量(局部变量)
11.类的名称与类内部有返回值的方法名称要一致,方法在括号内写形参的时候,记得写类名。
12.封装通俗来讲就是访问私有的成员变量或者私有的函数时,需要通过公开的函数(构造函数和普通函数)来实现。
13、当一个类中有String类型的返回值时,可以直接输出这个类,会自动调用String类型函数。
14、Arrylist和Hashset都是容器,Arrylist有序,Hashset无序,Hashset可以参照数学中的集合,其输出无序且无重复元素。
15、在Hashmap中,其参数都是类的名称,找到key,再赋值value。
16、对理解继承来说,最重要的事情是,知道哪些东西被继承了,或者说,子类从父类那里得到了什么。答案是:所有的东西,所有的父类的成员,包括变量和方法,都成为了子类的成员,除了构造方法。构造方法是父类所独有的,因为它们的名字就是类的名字,所以父类的构造方法在子类中不存在。除此之外,子类继承得到了父类所有的成员。
但是得到不等于可以随便使用。每个成员有不同的访问属性,子类继承得到了父类所有的成员,但是不同的访问属性使得子类在使用这些成员时有所不同:有些父类的成员直接成为子类的对外的界面,有些则被深深地隐藏起来,即使子类自己也不能直接访问。下表列出了不同访问属性的父类成员在子类中的访问属性:
public的成员直接成为子类的public的成员,protected的成员也直接成为子类的protected的成员。Java的protected的意思是包内和子类可访问,所以它比缺省的访问属性要宽一些。而对于父类的缺省的未定义访问属性的成员来说,他们是在父类所在的包内可见,如果子类不属于父类的包,那么在子类里面,这些缺省属性的成员和private的成员是一样的:不可见。父类的private的成员在子类里仍然是存在的,只是子类中不能直接访问。我们不可以在子类中重新定义继承得到的成员的访问属性。如果我们试图重新定义一个在父类中已经存在的成员变量,那么我们是在定义一个与父类的成员变量完全无关的变量,在子类中我们可以访问这个定义在子类中的变量,在父类的方法中访问父类的那个。尽管它们同名但是互不影响。
在构造一个子类的对象时,父类的构造方法也是会被调用的,而且父类的构造方法在子类的构造方法之前被调用。在程序运行过程中,子类对象的一部分空间存放的是父类对象。因为子类从父类得到继承,在子类对象初始化过程中可能会使用到父类的成员。所以父类的空间正是要先被初始化的,然后子类的空间才得到初始化。在这个过程中,如果父类的构造方法需要参数,如何传递参数就很重要了。
可以使用标号,让break,continue指定跳出,跳过标号的那层循环。
降低耦合度的方法
1、少使用类的继承,多用接口隐藏实现的细节。 Java面向对象编程引入接口除了支持多态外, 隐藏实现细节也是其中一个目的。
2、模块的功能化分尽可能的单一,道理也很简单,功能单一的模块供其它模块调用的机会就少。(其实这是高内聚的一种说法,高内聚低耦合一般同时出现)。
3、遵循一个定义只在一个地方出现。
4、少使用全局变量。
5、类属性和方法的声明少用public,多用private关键字。
6、多用设计模式,比如采用MVC的设计模式就可以降低界面与业务逻辑的耦合度。
7、尽量不用“硬编码”的方式写程序,同时也尽量避免直接用SQL语句操作数据库。
8、最后当然就是避免直接操作或调用其它模块或类(内容耦合);如果模块间必须存在耦合,原则上尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,避免使用内容耦合。
增强内聚度方法
1、模块只对外暴露最小限度的接口,形成最低的依赖关系。
2、只要对外接口不变,模块内部的修改,就不得影响其他模块。
3、删除一个模块,应当只影响有依赖关系的其他模块,而不应该影响其他无关部分。
接口和抽象类有什么区别
abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于abstract class和interface的选择显得比较随意。其实,两者之间还是有很大的区别的
1、抽象类里面可以有非抽象方法。但接口里只能有抽象方法,接口体现的是一种规范,抽象类体现的是模板式设计。
2、接口(interface)是抽像类的变体。在接口中,所有方法都是抽像的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽像的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对像上调用接口的方法。由于有抽像类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口
3、接口里不可以定义静态方法,抽象类里可以。接口里的变量全部为静态常量,抽象类里可以有普通变量。
4.接口里不可以有构造函数和初始化块,抽象类里可以有。
5.一个类可以实现多个接口,但只能继承一个抽象类。
try catch流程示意图
选择什么类读数据