java基础夯实(杂记):
1:创建实例对象可以通过无参的构造函数然后调用成员变量去初始化属性,也可以自己定义有参构造方法直接初始化属性,当属性为private时我们可以通过getset方法间接访问:
2:在类中定义为static的方法和属性是属于类本身的,并不需要实例化就可以调用,或者是说所有实例化的对象共同拥有它
3:静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员。如果希望在静态方法中调用非静态变量,
可以通过创建类的对象,然后通过对象来访问非静态变量。在普通成员方法中,则可以直接访问同类的非静态变量和静态变量
静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法,但是可以直接调用静态方法。普通成员方法中则可以
直接调用普通成员方法和 如
public class HelloWorld { // 定义静态变量score1 static int score1 = 86; // 定义静态变量score2 static int score2 = 91; //普通变量 int score3=1; // 定义静态方法sum,计算成绩总分,并返回总分 public static int sum() { int totoal =score1+score2+(new HelloWorld()).score3; return totoal; } //普通方法中调用静态方法直接调用, public int sum1(){ int totoal1=sum(); return totoal1; } //静态方法方法中调用普通方法必须实例化对象 public static void main(String[] args) { // 调用静态方法sum并接收返回值 int allScore = (new HelloWorld()).sum1(); System.out.println("总分:" + allScore); } }
4:equals 是值比较,==是比较内存 例如:if(str == null || "".equals(null))和if(str == null || str.equals("")) 前者两个意义一样的,都是比较是否为空,不占用内存 后者是不叫str是否为空并且是否为空串(不仅为空而且不占用内存) 5:到底什么时候需要手动抛出异常 第一个: 假设voteid你传值时不小心传了个字符串类型的,比如传的值为a,这样,他不属于 int范围,此时,就会抛出异常。应该是类型转换异常。 第二个同理。 另外,异常不是必须的,只是在某些情况下需要(比如类型转换时,或者连接数据库时,流输入输出时 或者其他的什么),比如你的这两个方法。
6:从流获得的数据一定要先转换成字节型在装换成字符型
7:arraylist,vector,linkedlist;
arraylist内部采用数组元素存储,支持高效的随机访问,支持多态调整大小
linkedlist内部采用双向链表存储,支持快速插入删除元素,但是不支持高效随机访问
vector:线程安全版的arraylist
8:stringbuffe可以看做是线程安全的stringbuiler
9:substring(参数)是java中截取字符串的一个方法
有两种传参方式
一种是public String substring(int beginIndex)
返回一个新的字符串,它是此字符串的一个子字符串。该子字符串从指定索引处的字符开始,直到此字符串末尾。
另一种是public String substring(int beginIndex, int endIndex)
返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的 beginIndex 处开始,直到索引 endIndex - 1 处的字符。因此,该子字符串的长度为 endIndex-beginIndex。