Java随笔

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流程示意图

选择什么类读数据 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值