java面试第二章的知识点

1、Switch(变量或者表达式)---变量可以取整数类型(int,short,byte,char)String(jdk1.7之后才开始支持)

   case空格后面只能写switch里面定义的变量类型所对应的字面值。

2、DO while 循环

do while循环与while循序的区别是:do while循环是不管条件是否成立,至少会执行一次循环体的。但是while可能一次也不会执行。while循环:当循环次数不确定时,适合用while循环。

3、Break  continue关键字

Break:跳出当前这层循环语句或者switch语句

contuine:跳出当前这次循环

4、数组就是相同数据类型的元素按一定顺序排列的集合,换种说法就是把有限个类型相同的变量用一个名字命名。

    数组的特点:(1)数组创建的额内存空间只能存储相同类型的数据

(2)数组所分配内存空间是连续的

(3)数组所分配的内存空间是不可扩充的

5、数组扩充的办法:

(1)初始化一个新数组,长度时原来的两倍

(2)把老数组的数据复制到新数组中

(3)让老数组指向新数组的地址

方法一:

//新来一个学生,存储他的成绩,数组需要扩充
//		1.首先先定义一个大数组
		int[] big=new int[2*small.length];
//		2.复制小数组的内容到大数组的前small.length个位置
		for(int i=0;i<small.length;i++){
			big[i]=small[i];
		}
//		3.修改small的地址,指向大数组
		small=big;

方法二:

1.首先先定义一个大数组
		int[] big=new int[2*small.length];
//		2.复制小数组的内容到大数组的前small.length个位置
		 System.arraycopy(small, 0, big, 0, 5);
//		3.修改small的地址,指向大数组
		small=big;

方法三:

small=Arrays.copyOf(small,10);

第一个参数:需要被扩充的数组   第二个参数:扩充为多大

6、数组的插入数据

数组a中插入一个元素element,插入到第pos个位置。

具体思路:

        1.插入元素之前先看当前数组有效长度count是否等于数组长度a.length,如果相等就需要先扩充数组expand

         2.从第count个位置,一直到pos位置,循环体里面就是让当前元素的值等于上一个元素的值

        3.a的第pos个位置赋值为element    

       * @parama 表示数组

        * @param element 表示插入的元素值

        * @param pos 表示插入位置

        * @param count 数组有效长度

        * @return

public static int[] insert(int[] a,int element,int pos,int count){
		 
		if(count==a.length){
			//扩充数组
			a = expand(a);//此处的expand是一个方法,专门用来扩充数组的,只是把他做成了一个工具类
		}
		for(int i=count;i>pos;i--){
			a[i]=a[i-1];
		}
		a[pos]=element;
		return a;
	}

7.删除元素

从数组a中删除第pos个位置的元素。

/**

    *

    * @param数组

    * @param count 有效长度

    * @param pos 删除的位置,位置从0开始算

    * @return

    */

   public static int[] delete(int[] a,int count,int pos){

      for(int i=pos;i<count-1;i++){

          a[i]=a[i+1];

      }

      return a;

   }

 8.jvm运行的内存结构;


9、对象时客观存在的,对象是从类产生的,类是抽象的,是从众多的对象中提取一个特征组成的一个概念叫做类。

    创建一个Student的对象:Student  stu=new Student();下面是在内存空间上对他的分析:

栈区   

 stu  =r001

堆区

new Student->r001

方法区

Student的基本方法

实例变量和局部变量发生命名冲突时局部变量优先。

10、创建一个字符串对象

 String s = “suns”;创建一个对象

 String s = new String(“suns”); 创建了两个对象

这两者方法创建一个字符串的区别:

前者是把对象放在jvm字符串常量池,下次定义同样字符串时候可以不用创建,直接使用,简易采用此方法。后者是不放在常量池里面的。

11、String常用的方法:

equals是比较两个字符串是否时候相同的,

charAt(int a)返回的是一个字符型的例如:

char c="apple".charAt(3);

length()返回的是一个字符串的长度   int len=“apple”.length();

startWith(String s)是否是以一个字符串s开始的,返回的数据类型是布尔类型的。

trim()去掉两边空格

Contains(String str)

当前字符串对象是否包含str对应的字符串,如果包含返回true,不包含返回false。

String str="orrnge";

     if(str.contains("a")){

        System.out.println("该商品符合检索条件");

     }

Substring(intbegin,int end)子串。

Begin从0开始,end表示截取到第end-1个字符。

String str="[email protected]";

      String substr=str.substring(8,11);

      System.out.println(substr);

 

 

Substring(intbegin)

对当前字符串求从begin这个位置开始的子字符串。Begin从0开始。

String str="huili.zhang@163.com";

      String substr=str.substring(12);

      System.out.println(substr);

 

Int  indexOf(String s)

返回s在当前大字符串中第几个位置出现,位置从0开始计算的。

String str="huili.zhang@163.com";

      int pos=str.indexOf("@");

      System.out.println(pos);

lastIndexOf(Strings)

s在字符串中最后一次出现的位置

String str="huili.zhang@163.com";

      int pos=str.lastIndexOf(".");

      System.out.println(pos);

Replace(old,new),replaceAll(find,instead)

Replace:old代表被替换的字符串,new表示替换成的目标字符串

replaceAll含义和replace基本相同,但是支持正则表达式。














      



原文链接:加载失败,请重新获取