各种混合小知识点(一)

1、虚拟机是无法跨平台的,不同的操作系统上有不同版本的虚拟机。因为虚拟机技术,java才可以跨平台。
2、我们所说的栈为虚拟机栈。
3、finalize()方法,返回类型是object,当没有引用指向该对象时,垃圾回收器调用该方法。就算我们自己手动调用该方法,你也不知道什么时候就被回收,所以我们是无法控制对象什么时候被回收。
4、超文本:带有超链接的文本
5、http:无状态协议,不会记住你是谁,第一次请求和第二次请求之间没有关联。相当于给10086打电话。FTP是有状态协议,
6、客户端路径要求带项目名
7、栈是先进后出,队列是先进先出
8、类的装载是在第一次创建对象之前进行的
9、访问修饰符不能修饰局部变量和代码块,局部变量只能用final修饰,其他都不可以,static也不行
10、局部变量一定要初始化,main方法里的也是局部变量。局部变量没有默认值。
11、面向对象的基本原则具体链接请点击

1、 开闭原则
2、 里氏替换原则
3、 单一职责原则
4、 接口隔离原则
5、 依赖倒置原则
6、 迪米特原则
7、组合/聚合复用原则

12、String和数组:在进行传递时,String虽然是引用类型,但表现的是值传递,所以当这个都是成员变量,在方法里对其进行更改时,不会对String造成影响,er数组内容会被改变。
13、工厂模式请点击链接 —-设计模式–工厂模式
14、System类是final关键字修饰的类,它不能被其他类所继承,System类不能被实例化,虽然有无参构造,但是是用private修饰的。构造方法的修饰符可以是private,如果是private表示不可以使用该构造方法创建实例。System类中提供了获取当前系统属性的方法,System类中定义了许多方法,其中是有定义属性的。(System.in),in就是他的一个属性。
15、nextInt()如果不传参,会返回负数,返回的是-2的23次方到2的23次方(不包括)的值
16、java.exe是java解释器,javac是编译器
17、对于String的操作都是产生一个新的对象,所以调用方法后,一定要有变量接收。
18、在Java语言中,不允许使用指针体现出的Java特性是安全性。Java语言在运行程序时,有严格的访问权限检查。对字节代码执行前要检查,不允许使用指针,可以防止对内存的非法入侵。
19、在Java中语句:37.2%10的运算结果为7.200000000000003
20、char ch = '8';System.out.println(ch+1);结果是57,会转称ASCII码来相加
21、定义static的变量是为在静态方法中使用,不一定要赋初值,如果没有会默认给,int的为0。但最好赋初值。

public class Te {
    static int a;//不一定要赋初值,因为int,默认为0,String为null
    public static void main(String[] args){
        mo(a);//这个是值传递,所以并没有影响外面的成员变量a
        System.out.println(a);//输出为0
    }
    public static void mo(int a){
        a++;
    }
}

22、local variable局部变量
23、对于重载来说。1.方法名一定要相同。
2.方法的参数表必须不同,包括参数的类型或个数,以此区分不同的方法体
3.方法的返回类型、修饰符可以相同,也可不同。
但如果是仅仅是返回类型以及修饰符不同的话,不能认为是重载,如果这样写会编译出错。
24、判断一个字符串是否为空,首先就要确保他不是null,然后再判断他的长度。
1、null表示这个字符串不指向任何的东西,如果这时候你调用它的方法,那么就会出现空指针异常。
2、”“表示它指向一个长度为0的字符串,这时候调用它的方法是安全的。

 if(str1==null||str1.equals("")){ //所以在判断字符串是否为空时,先判断是不是对象,如果是,再判断是不是空字符串 }
 ifstr != null && str.length() != 0) { }

25、软件设计通常可分为概要设计和详细设计两个阶段。其中,概要设计的主要任务是①软件系统的结构、②进行模块划分、③确定每个模块的功能、接口以及④模块间的调用关系。
体系结构设计的主要目标是开发一个模块化的程序结构,并表示出模块间的控制关系。此外,体系结构设计将程序结构和数据结构相结合,为数据在程序中的流动定义了接口。因此,软件结构设计的主要任务是要确定模块问的组成关系。
26、总结:对于finally块中没有return语句的情况,方法在返回之前会先将返回值保存在局部变量表中的某个slot中,然后执行finally块中的语句,之后再将保存在局部变量表中某个slot中的数据放入操作数栈的栈顶并进行返回,因此对于基本数据类型而言,若在finally块中改变其值,并不会影响最后return的值。
而对于finally块中包含了return语句的情况,则在try块中的return执行之前,会先goto到finally块中,而在goto之前并不会对try块中要返回的值进行保护,而是直接去执行finally块中的语句,并最终执行finally块中的return语句,而忽略try块中的return语句,因此最终返回的值是在finally块中改变之后的值。虽然当你在finally块中写了return语句时,会出现黄色警告,但是其实是没有影响的。
27、当子类继承父类时,子类构造方法,会默认调用父类的无参构造。如果父类没有构造方法,那么子类也可以不必给出构造方法,如果父类有构造方法,但是没有无参构造,此时子类必须写构造方法,先后显示调用父类现在的构造方法,如果父类有无参构造,那子类可以不用写构造方法,但子类创建实例时,是使用无参构造。子类创建子类对象,如果没有重写父类的方法,调用时,相当于是调用了父类方法。即是写在父类的方法在子类中都有。
28、无论父类中的成员变量是私有的、共有的、还是其它类型的,子类都会拥有父类中的这些成员变量。但是父类中的私有成员变量,无法在子类中直接访问。
无论父类中的成员变量是否被子类覆盖,子类都会拥有父类中的这些成员变量。根据你创建的的是哪一个对象,如果你创建的是子类引用指向子类对象,如果调用子类未被重写的父类方法去输出子类父类都有的成员变量i,会输出父类的成员变量,如果子类重写了,还是调用子类的。还有一种情况就是虽然是父类引用指向子类对象,但是子类中重写了父类中的方法,并且在该方法中用了被子类覆盖的成员变量i,则此时使用的也会是子类中的i.(如下例题)

 class Parent{
        int i=20;
        int j=30;

        void f(){
          System.out.print(" "+i);  20
        }
      }

      class Child extends Parent {
         int i=30;
         int k=40;

         void f(){
           System.out.print(" "+i);   
         }

         void g(){
           System.out.print(" "+k);
         }

         public static void main(String args[]){
           Parent x=new Child();
           System.out.print(x.i);
           x.f();
           Child x1=(Child)x;
           System.out.print(" "+x1.i);
           x1.f();
        }
     }
//输出结果为  20  30 30  30
如果把子类中的void f(){}注释,则输出 20 20 30 20

29、接口里的方法默认都是public abstract修饰的。
30、关于break,我们可以借助于标记来实现任何外层循环的中断。
31、Object类中的equals()方法比较的是两个对象的地址。
32、 1、基本型和基本型封装型进行“==”运算符的比较,基本型封装型将会自动拆箱变为基本型后再进行比较,
因此Integer(b)会自动拆箱为int类型再进行比较,int a=257; Integer b=257;显然返回true。
另外两个Integer对象进行“==”比较时,如果有一方的Integer对象是new获得的,返回false,因为比较的是两个对象的地址,
3、两个基本型的封装型进行equals()比较,首先equals()会比较类型,如果类型相同,则继续比较值,如果值也相同,返回true
4、基本型封装类型调用equals(),但是参数是基本类型,这时候,先会进行自动装箱,基本型转换为其封装类型,若类型不同返回false,
若装箱后类型相同,则比较值,如果值相同,则返回true,否则返回false
33、单例模式,就是你只能在这个项目中创建一个该对象,最主要的就是构造方法私有,然后提供方法一个方法来生成对象,方法中判断有没有该对象,有就返回该对象,没有就创建一个对象返回出去。

猜你喜欢

转载自blog.csdn.net/ilikejj0/article/details/80141241