类与对象(二)

将对象用作参数

任何数据类型其实都可以作为参数传递给方法;

如果是引用类型的变量作为参数传递,就是对象传递(本质是对象的地址传递)

参数的引用传递

方法调用时传参,本质上都是将实参的副本值取出来,传给形参

如果是基本数据类型,如:

int a = 10;
method1(a);
//调用mathod1(a)方法时,就是取出形参a的副本值10传给方法,即method1(10);

如果是引用数据类型,如:

Demo dm = new Demo();
method2(dm);
//调用method2(dm)方法时,就是取出形参dm的副本值地址值传递给方法,形参就接收这个值

不同的是:

引用类型传值传的是地址,实参变量和形参变量的值都是相同的地址值,指向同一个对象

如果使用形参改变了所指对象的属性的内容的话,那么实参所指的属性内容也随之改变,因为他们都指向同一个对象

包装类

基本类型 包装类
int Integer
short Short
long Long
char Character
double Double
float Float
boolean Boolean
byte Byte

装箱操作

将基本数据类型变成包装类,叫装箱,即包装类的构造方法

拆箱操作

将包装类变成基本数据类型,叫拆箱,即各个类的valueOf()方法

整数的缓存

  • 适用的空间为-128 ~ 127
  • 使用构造器创建的Integer对象不能被缓存

String类

字符串是一系列的字符组成的序列

字符串与字符数组相关的方法有:

public String(char[] value)
public String(char[] value int offset, int count)
    
示例:
char[] charArray = {'a','b','c'};
String str = new String(charArray,1,2);
public char charAt(int index)
    
示例:
String str = "helloWorld";
char c = str.charAt(5);
public char[] toCharArray()
    
示例:
String str = "helloWorld";
char[] charArray = str.toCharArray();

声明字符串:

String s = "Hello World";
String ss = new String("Hello World");

字符串的长度:

string.length()

字符串的内容比较:

str.equals(str1)
str.equalsIgnoreCase(str1)
str.toUpperCase()
str.toLowerCase()

字符串的连接:

在拼接时会将其他被拼接的类型自动转换为字符串类型

str.concat(str1);

字符串的提取和查询:

public int indexOf(int ch | String value):根据某字符或字符串查找其第一次出现位置(索引)
如:
String str = "HelloWorld";
int index = str.indexOf("W");

public int indexLastOf(int ch | String value):根据某字符或字符串查找其最后一次出现位置(索引)
public String substring(int index):根据指定索引截取子字符串
如:
String str = "Hello World";
String substr = str.substring(6);//World
String subStr = str.substring(str.indexOf("W"));//World

public String substring(int index, int endIndex):根据指定索引及结束索引截取子字符串
如:
String str = "Hello World";
String substr = str.substring(0,5);//Hello
String subStr = str.substring(str.indexOf("H"), 5);//Hello

public String trim():去掉字符串的前后空格
如:
String str = "    Hello World    ";
str.trim();//Hello World

字符串的分割:
str.split();

StringBuffer和StringBuilder

使用“+”作字符串拼接时,会产生新的字符串对象,若进行大量的字符串拼接,效率极低

若使用StringBuffer或StringBuilder进行字符串拼接时,不会产生新的对象,使用他们进行大量字符串拼接时,效率极高

(多线程使用)StringBuffer是线程安全的(可以同步访问)- 有性能损耗

(单线程使用)StringBuilder是线程非安全的(不能同步访问)

posted @ 2020-01-20 17:38  笔架山Code  阅读(126)  评论(0编辑  收藏  举报