数组及补充说明

数组  

  什么是数组?

   数组是存储在一个连续的内存块中的元素集合     

   数组中的每个元素必须是相同的数据类型,并且通过索引  进行区分。

   数组中的第一个元素的索引为0

 为什么要使用数组?     

  单一值类型变量有时候很难满足应用程序的设计要求。     

  数组类型变量可以同时存储多个同类型基础数据类型变量或对象。

创建数组  

  声明数组      

  int score [];      

  int [] score;//提倡使用的方式  分配空间      

  score = new int [10];(分配空间后,默认的值是0)      

  ArrayIndexOutOfBoundExceotion(数组下标越界)  

  声明并分配空间     

  int [] score = new int [10];

   初始化      

  score [0] = 1;  

  声明、分配空间并初始化      

  int [] score = new int []{1,2,3,4,5};      

   int [] score = {1,2,3,4,5};//不能分开成两条语句

   数组的大小(长度)     

  用到length属性     

  例如:for(int i = 0;i < score.length;i++){    sum += score;    }    

   int avg = sum / score.length;     

  java中的数组是对象

  补充  

  循环结构for each:用于数组或者集合的遍历操作   

  用法:for(单个数据类型  变量 : 数组或集合的名称){

       }   

  例如:   for (int item : score){         sum += score;    }  

  注意:不可以通过item改变数组元素的值

  对象数组/* 难点 */  

  User [] users = new User[100];

  数组拷贝  

  使用Arrays.copyof(oraginalArrays,length)  

  int [] score = new int []{1,2,3,4,5};  

  int [] temp = Arrays.copyof(score,score.length);

  数组的排序(升序)  

  签名  public static void sort(int [] a)

  多维数组  

  arrays[行][列]  

  arrays.length 的结果值是行数  

  arrays[0].length的结果是列数  

  如何遍历?  

  for (int [] is : arr){  

     for(int [] i : is){

      }      

   } 
  三、JVM  

java程序运行在JVM上  

JVM是java程序和操作系统之间的桥梁  

JVM实现了java的平台无关性  

JVM是内存分配原理的基础与前提

内存分配  

——寄存器     

  JVM内部虚拟寄存器,存取速度非常快,程序不可控制  

——栈(First in,last out)     

  保存局部变量的值,包括:

    1、用来保存基本数据类型;     

    2、保存类的实例(即堆区对象)的引用(指针)  

——堆     

  用来存放动态产生的数据,比如new出来的对象。  

  注意创建出来的对象只包含属于各自成员变量,并不包含成员方法。  

  因为同一个类的对象拥有各自的成员变量,存储在各自的堆中。

——java运行过程涉及的内存区域     

  1、常量池           

    常量池就是这个类型用到的常量的一个有序集合   

例如字符串的创建    

  String str = "abc";    

    这里是在常量池中查找或者创建abc,再由栈引用常量池中的值   

    而String str2 = new String("abc");(这儿会创建两个对象,分别在堆和常量池中)    

    先在堆中拷贝下常量池中的值,再由栈引用堆中的值   

    注意: System.out.println(str == str2);比较的是地址的值,返回false;         

  2、代码段     

  3、数据段  

字符串常用的方法

 测试后缀名字是否相同  

  public boolean endswith(String suffix);

 返回指定字符在此字符串中第一次出现的索引  

  public int indexOf(int ch);

  返回值是否为空

   public boolean isEmpty();  

       当且仅当length()为0时返回true.

  分割字符串  

  public String[] split (String regex);  

  Regex  

结果  :     { "boo", "and", "foo" }

    o  { "b", "", ":and:f" }

  返回一个新的字符串,它是此字符串的一个子字符串。

  该子字符串从指定索引处的字符开始, 直到此字符串末尾。

     public String substring(int beginIndex);     

    示例:  

       "unhappy".substring(2) returns "happy"   

      "Harbison".substring(3) returns "bison"   

      "emptiness".substring(9) returns "" (an empty string)

使用默认语言环境的规则

  将此 String 中的所有字符都转换为小写

     public String toLowerCase();

  使用默认语言环境的规则将此

  String 中的所有字符都转换为大写  

    public String toUpperCase();

  返回字符串的副本,忽略前导空白和尾部空白(去掉前后空格)  

    public String trim();

 字符串的拼接  

  String name = "张三";  

  String address = "成都";  

  String infor = name + address;    

  StringBuilder = new StringBuilder();  

 

    四、补充

在字符串中,length是一个属性,后面不加括号  

而在求字符串的长度的时候,调用的是一个方法,length后面要加括号

 访问修饰符  

 
  √表示可以使用


        本类       同一包中不同类      不同包     子类  

public         √                   √                 √           √

protected    √                  √                  √ 

default        √                  √ 

private        √  

原文地址:https://www.cnblogs.com/Spirit612/p/4397941.html