首页 > 代码库 > 我的Java问题集(1)(重点、难点、疑点)未完待续...

我的Java问题集(1)(重点、难点、疑点)未完待续...

学习Java这么久了,总算也了点笔记,一个一个字码的哟!


1、Java中的int等类型变量既然已经有默认值为0,为什么还会出现没有初始化,编译出错呢?

一个变量作为类成员使用的时候,如果没有被初始化,java会为其分配默认值:

Boolean false

Char ‘\u0000‘(null)

byte (byte)0

short (short)0

int 0

long 0L

float 0.0f

double 0.0d

如果在一个方法中定义一个变量,java不会给其分配默认值,就必须我们来给他初始化,否则将得到编译错误的提示;

2、不使用第三个变量交换两数的值。

   方法一、a=a^b;

           b=b^a;

           a=a^b;

   方法二、a=a+b;

           b=a-b;

           a=a-b;

  方法三、a=a*b;

          b=a/b;

          a=a/b;

3、基本数据类型不包括string

4、两个数值进行运算时结果至少是int型,如果参与运算的两个数值级别比int型低或是int型,结果就为int型,若有一个数值级别比int型高,则结果与数值高的级别相同。

5、数组初始化时不可将静态初始化和动态初始化同时使用,即不可在数组初始化时指定数组长度的同时为每一个数组元素赋值,    如:Stringpoetry[]=newString[5]{“1”,”2”,”3”,”4”,”5”}编译会出错

6、foreach语句

  for(数据类型 变量名:数组名){

  //循环体

}该语句不能通过循环改变数组中元素的值

7、定义数组时,内层数组是在外层数组内创建的,所以不能没有行数,但可以没有列数

8、关于获取StringBuffer对象的容量问题

1、没有指定容量的大小时,系统默认16字符的容量

2、如果修改后的StringBuffer对象容量小于字符串的内容,增长规律为:(容量+1)*2

3、如果2增长后还是小于字符串容量则它的容量就等于字符串容量

9、类中的成员变量如果隐藏的话可以通过setName(),setAge()之类的形参与数据成员同名,可以通过前缀this访问该成员变量

10、只要是类就一定有构造函数,并且只要创建对象会执行构造函数,构造函数不能直接访问构造函数,但可以使用this关键字

11、静态方法无法访问非静态方法的实例变量和方法

12、程序入口main()函数输入参数时,每一个参数要用空格分开,如果参数中有空格,则将其用(“”)括起来

13、一个原文件中只能有一public类,且累的访问权限只有public和default两种

14、直接在类中定义的且没有加static的代码块{}称为构造块,每次创建对象时都要调用,并优先于构造函数

15、无论创建多少对象,静态代码块之执行一次

16、子类不能继承父类的构造函数,但可以通过super关键字调用

17、子类和父类在同一包中,子类不能调用父类的private的属性和方法,但可以调用非private的属性和方法。若不爱哟个包中,在则不可访问private和默认级别的属性和方法

18、出现递归构造器调用错误时,构造方法之间相互调用时,一定要留出一个出口,一般会将无参构造函数作为出口,即它不在带哦用其他构造函数。

19、对象的成员变量初始化顺序

  1、父类静态成员和静态初始化块,按在代码中的顺序执行

  2、子类静态成员和静态初始化块,按在代码中顺序执行

  3、父类实例成员和实例初始化块,按在代码中顺序执行

  4、执行父类构造方法

  5、子类实例成员和实例初始化块,按在代码中顺序执行

  6、执行子类构造方法

20、parseBoollean()方法在接收字符串时,规则和Boolean类的构造方法一样,只要字符串为true(区分大小写),返回值为true,否则返回false

21、final修饰基本数据变量后不可修改,且只能在定义时初始化或用构造块初始化;修饰引用数据类型后,引用不可修改,但是可以修改引用对象的属性;只有非抽象类的方法才可以被final修饰

22、使用正则表达式验证邮箱格式

import java.util.Scanner;

public class ScannerDemo {

   public static void main(String[] args){

       Scanner scan = new Scanner(System.in);

       String pattern = "[a-zA-Z0-9_\\.]+@[a-zA-Z0-9]+[\\.a-zA-Z]+$";

       

       System.out.println("请输入邮箱地址:");

       String mail=null;

       if(scan.hasNext(pattern)){//输入数据

         mail=scan.next();      //将数据再次读入

         System.out.println("您输入的邮箱:"+mail);                

       }else{         

          System.out.println("您输入的邮箱格式不正确!");

       }

         

  }

}