1、“==”比较的是地址,str1.equals(str2)比较的是内容,一般比较string类型,都用后者进行比较。
2、string字符串内容是不可改变的,改变的只是堆空间中内存地址的指向。
3、string字符串的常用方法。
4、stringBuffer类和string,可见以下区别。
其中左边代码可顺利输出hello!+hi,改变了内容。右边代码则依然输出hello!。
在循环对字符串进行操作的过程中,string比stringBuffer更消耗空间和时间,一般要考虑应用stringBuffer类。
5、stringBuffer类:
stringBuilder类:
6、程序中有许多情况是可能出现异常的,例如,被除数不能为0,那么就可以捕获被除数为0时的异常,即算术异常。再例如,对象未实例化也会出现异常,即空指针异常。异常程序如下:
try中是可能出现异常的语句。catch中打印异常。
7、Java中throw是异常抛出的关键字,将异常抛给调用者进行处理,如果是main函数抛出异常,则交给jvm进行处理。用法是跟在函数后面throw。
8、java面向对象。
9、Java中类的封装性,private对java类中的属性和方法进行封装。要访问它,必须通过get()和set()方法来得到,在代码中可以直接右击找到source,再找到generate getter and setter,就可以自动创建方法。通过这两个方法,才能够被外部所使用。
10、类中的构造方法就是在构造对象的时候自动执行,无需调用,构造方法与类名相同,前面是访问修饰符,没有返回值。构造方法主要是为类属性进行初始化。每个类在实例化对象后都会调用构造方法,如果没有构造方法,(在编译时,系统会自动加一个)则会自动执行一个无参的什么都不做的构造方法。同时,构造方法也可以重载,类中可有好几个构造方法。
11、基本数据类型(Boolean,byte,char,String,int,Long,float,double)作为参数传递时,传递的是实参值的副本,即传的是值,无论在函数中怎么操作这个副本,实参的值是不会被改变的,如下:
这个的输出是两个hello,并没有改为jike
而将类对象作为参数进行传递时,传递的则是该对象的引用,指向实参,实参会受到改变,如下:
进行引用传递之后,则顺利更改。
12、当类中的方法或变量为静态时,即有static修饰时,或者是类常量时,均可使用类名.a或类名.b()直接调用。java中的枚举变量同常量类似,也可使用类名直接调用。关键字final用来修饰常量,表示程序运行过程中不被修改。
13、无论一个类实例化了多少个对象,其中的静态变量都只有一份拷贝,无论操作哪个均是对同一份拷贝进行的操作。
14、静态方法是不可以调用非静态的方法和属性!
15、java中使用extends来实现继承(扩展),class A extends B{ }