1.值传递和引用传递
值传递:实参传递给形参的是值,相当于实参的复制品给了形参,函数中对于形参的任何修改操作不会对实参产生任何影响。这是两个不同的变量。
package arrayDemo;
public class Demo1 {
public static void main(String[] args) {
int b =20;
change(b);// 实参 实际上的参数
System.out.println(b);
}
public static void change(int a){//形参 形式上的参数
a=100;
}
}
结果:20
引用传递:实参传递给形参的是参数对于 堆内存上的引用地址 实参和 形参在内存上指向 了同一块区域 对形参的修改会影响实参
package arrayDemo;
public class Demo1 {
public static void main(String[] args) {
int [] a={1,2,3};
System.out.println(a[0]);
change(a);
System.out.println(a[0]);
}
public static void change(int[] a ){
a[0]=100;
}
}
结果:100
2、Set && HashSet
求长度:.size();
基本概念:
HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合。
HashSet 允许有 null 值。
HashSet 是无序的,即不会记录插入的顺序。
HashSet 不是线程安全的, 如果多个线程尝试同时修改 HashSet,则最终结果是不确定的。 您必须在多线程访问时显式同步对 HashSet 的并发访问。
HashSet 实现了 Set 接口。
常用方法:
方法摘要
boolean
add(E
如果此 set 中尚未包含指定元素,则添加指定元素。void
clear()
从此 set 中移除所有元素。Object
clone()
返回此 HashSet 实例的浅表副本:并没有复制这些元素本身。boolean
contains(Object
如果此 set 包含指定元素,则返回 true。boolean
isEmpty()
如果此 set 不包含任何元素,则返回 true。Iterator<E>
iterator()
返回对此 set 中元素进行迭代的迭代器。boolean
remove(Object
如果指定元素存在于此 set 中,则将其移除。int
size()
返回此 set 中的元素的数量(set 的容量)。
3、字符串相关
求长度:.length()
Arrays.sort(s1):可以对字符串按照字典序排序,sort方法可以对字符串类型排序。
String newStr = new String(s1):s1是char[] 类型的字符数组,可以通过这种方式转化为字符串。
字符串比较:compareTo方法,它从第一位开始比较,如果遇到不同的字符,则马上返回这两个字符的ascii值差值..返回值是int类型。
获取字符串第i个位置的元素 。 Str.charAt(i)
各种类型转化为字符串类型。
static String
valueOf(boolean b)
返回boolean
参数的字符串表示形式。static String
valueOf(char c)
返回char
参数的字符串表示形式。static String
valueOf(char[] data)
返回char
数组参数的字符串表示形式。static String
valueOf(char[] data, int offset, int count)
返回char
数组参数的特定子数组的字符串表示形式。static String
valueOf(double d)
返回double
参数的字符串表示形式。static String
valueOf(float f)
返回float
参数的字符串表示形式。static String
valueOf(int i)
返回int
参数的字符串表示形式。static String
valueOf(long l)
返回long
参数的字符串表示形式。static String
valueOf(Object
返回Object
参数的字符串表示形式toString()方法
toString()方法返回反映这个对象的字符串。因为toString方法是Object里面已经有了的方法,而所有类都是继承Object,所以“所有对象都有这个方法”。 它通常只是为了方便输出,比如System.out.println(xx),括号里面的“xx”如果不是String类型的话,就自动调用xx的toString()方法 总而言之,它只是sun公司开发java的时候为了方便所有类的字符串操作而特意加入的一个方法。
4、java相等判定
==,equals和Arrays.equals的比较
在JVM中,内存分为堆内存跟栈内存。他们二者的区别是: 当我们创建一个对象(new Object)时,就会调用对象的构造函数来开辟空间,将对象数据存储到堆内存中,与此同时在栈内存中生成对应的引用,当我们在后续代码中调用的时候用的都是栈内存中的引用。还需注意的一点,基本数据类型是存储在栈内存中。
栈内存堆内存引用、地址数值包括引用数据类型的地址包括基本数据类型、引用类型的数值
总结:基本类型数据用 ==比较,对于字符串类型的数据,如果出现new关键字,必然会在堆内存中开屏空间,那么用 == 去比较的两个引用类型数据的地址,显然得出的结果是false,因此如果比较两个字符串的内容是否相等,用的是equals()方法。
== 比较的是对象数值本身,即基本数据类型或者 引用地址。基本类型适合使用==
equals 比较的是对象引用地址里对应的数据。引用类型适合使用equals。
Arrays.equals比较的是两个数组的元素是否相相等。数组类型适合使用Arrays.equals
5、 HashMap
求长度: .size()
基本概念:
HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。
HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度,最多允许一条记录的键为 null,不支持线程同步。
HashMap 是无序的,即不会记录插入的顺序。
HashMap 继承于AbstractMap,实现了 Map、Cloneable、java.io.Serializable 接口。
常用方法:
方法摘要
void
clear()
从此映射中移除所有映射关系。Object
clone()
返回此 HashMap 实例的浅表副本:并不复制键和值本身。boolean
containsKey(Object
如果此映射包含对于指定键的映射关系,则返回 true。boolean
containsValue(Object
如果此映射将一个或多个键映射到指定值,则返回 true。V
get(Object
返回指定键所映射的值;如果对于该键来说,此映射不包含任何映射关系,则返回null
。boolean
isEmpty()
如果此映射不包含键-值映射关系,则返回 true。V
put(K key, V
在此映射中关联指定值与指定键。V
remove(Object
从此映射中移除指定键的映射关系(如果存在)。int
size()
返回此映射中的键-值映射关系数。
6、双端队列 Deque
Java中实际上提供了java.util.Stack来实现栈结构,但官方目前已不推荐使用,而是使用java.util.Deque双端队列来实现队列与栈的各种需求.如下图所示java.util.Deque的实现子类有java.util.LinkedList和java.util.ArrayDeque.顾名思义前者是基于链表,后者基于数据实现的双端队列.
总体介绍
要讲栈和队列,首先要讲Deque接口。Deque的含义是“double ended queue”,即双端队列,它既可以当作栈使用,也可以当作队列使用。下表列出了Deque与Queue相对应的接口:
下表列出了Deque与Stack对应的接口:
上面两个表共定义了Deque的12个接口。添加,删除,取值都有两套接口,它们功能相同,区别是对失败情况的处理不同。一套接口遇到失败就会抛出异常,另一套遇到失败会返回特殊值(false或null)。除非某种实现对容量有限制,大多数情况下,添加操作是不会失败的。虽然Deque的接口有12个之多,但无非就是对容器的两端进行操作,或添加,或删除,或查看。明白了这一点讲解起来就会非常简单。
7、Integer常用方法
字段摘要
static int
MAX_VALUE
值为 231-1 的常量,它表示int
类型能够表示的最大值。static int
MIN_VALUE
值为 -231 的常量,它表示int
类型能够表示的最小值。static int
SIZE
用来以二进制补码形式表示 int 值的比特位数。static Class<Integer>
TYPE
表示基本类型int
的Class
实例。
自动拆箱实际调用函数
|
|
|
|
自动拆箱实际调用函数
|
|
|
|
|
|
字符串转整数所需函数
|
|
|
|