JAVA——(3)常用类:Math、Scanner、String、StringBuffer、Array、Calendar、Date、Character、包装类(Intger)

一、Math---是针对数学进行操作的类
没有构造方法,因为它的成员都是静态的
A:绝对值:public static int abs(int a)
B:向上取整:
public static double ceil(double a) C:向下取整public static double floor(double a)
D:两个数据中的大值:
public static int max(int a,int b)    min自学
E:a的b次幂:
public static double pow(double a,double b) F:随机数:public static double random(): [0.0,1.0)
如何产生一个1-100之间的随机数:int number = (int)(Math.random()*100)+1;
G:四舍五入 :
public static int round(float a) 参数为double的自学
H:正平方根 :public static double sqrt(double a)
二、Scanner---JDK5以后出现的用于键盘录入数据的类
构造方法:System.in--标准的输入流,对应于键盘录入
InputStream is = System.in;
Scanner(InputStream is)
常用的格式:
Scanner sc = new Scanner(System.in);
方法:
boolean hasNextXxx() 判断是否是某种类型的  hasNextInt()......
nextXxx() 返回某种类型的元素
如:public int nextInt() 返回int型元素
String nextLine() 读取下一行
三、String类---多个字符组成的一串数据,可以和字符数组进行相互转换。
(1)构造方法:
A:public String()
B:public String(byte[] bytes)
C:public String(byte[] bytes,int offset,int length)
D:public String(char[] value)
E:public String(char[] value,int offset,int count)
F:public String(String original)
下面的这一个虽然不是构造方法,但是结果也是一个字符串对象
G:String s = "hello";
(2)字符串的特点
字符串一旦被赋值,就不能改变。
注意:这里指的是字符串的内容不能改变,而不是引用不能改变。
字面值作为字符串对象和通过构造方法创建对象的不同
String s = new String("hello");和String s = "hello"的区别?
(3)字符串的面试题(看程序写结果)
==和equals()
String s1 = new String("hello");
String s2 = new String("hello");
System.out.println(s1 == s2);// false
System.out.println(s1.equals(s2));// true
String s3 = new String("hello");
String s4 = "hello";
System.out.println(s3 == s4);// false
System.out.println(s3.equals(s4));// true
String s5 = "hello";
String s6 = "hello";
System.out.println(s5 == s6);// true
System.out.println(s5.equals(s6));// true
字符串的拼接
String s1 = "hello";
String s2 = "world";
String s3 = "helloworld";
System.out.println(s3 == s1 + s2);// false
System.out.println(s3.equals((s1 + s2)));// true


System.out.println(s3 == "hello" + "world");// ---true
System.out.println(s3.equals("hello" + "world"));// true
(4)字符串的功能
A:判断功能
boolean equals(Object obj)
boolean equalsIgnoreCase(String str)
boolean contains(String str)
boolean startsWith(String str)
boolean endsWith(String str)
boolean isEmpty()
B:获取功能
int length()
char charAt(int index)
int indexOf(int ch)
int indexOf(String str)
int indexOf(int ch,int fromIndex)
int indexOf(String str,int fromIndex)
String substring(int start)
String substring(int start,int end)
C:转换功能
byte[] getBytes()
char[] toCharArray()
static String valueOf(char[] chs)
static String valueOf(int i)
String toLowerCase()
String toUpperCase()
String concat(String str)
D:其他功能
a:替换功能 
String replace(char old,char new)
String replace(String old,String new)
b:去空格功能
String trim()
c:按字典比较功能
int compareTo(String str)
int compareToIgnoreCase(String str) 
四、StringBuffer
字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。而StringBuffer就可以解决这个问题 (1)添加功能:public StringBuffer append(String str)

     public StringBuffer insert(int offset,String str)

删除功能:public StringBuffer deleteCharAt(int index)

public StringBuffer delete(int start,int end)

替换功能:public StringBuffer replace(int start,int end,String str)

反转功能:public StringBuffer reverse()
截取功能:
public String substring(int start)
 public String substring(int start,int end)
           面试题:
  1:String,StringBuffer,StringBuilder的区别?
  String是内容不可变的,而StringBuffer,StringBuilder都是内容可变的。
StringBuffer是同步的,数据安全,效率低;StringBuilder是不同步的,数据不安全,效率高
2:StringBuffer和数组的区别?
二者都可以看出是一个容器,装其他的数据。但是呢,StringBuffer的数据最终是一个字符串数据。而数组可以放置多种数据,但必须是同一种数据类型的。
五、数组高级以及Arrays
(1)排序
A:冒泡排序
相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处。同理,其他的元素就可以排好。

public static void bubbleSort(int[] arr) {
for(int x=0; x for(int y=0; y if(arr[y] > arr[y+1]) {
int temp = arr[y];
arr[y] = arr[y+1];
arr[y+1] = temp;
}
}
}
}

B:选择排序
把0索引的元素,和索引1以后的元素都进行比较,第一次完毕,最小值出现在了0索引。同理,其他的元素就可以排好。

public static void selectSort(int[] arr) {
for(int x=0; x for(int y=x+1; y if(arr[y] < arr[x]) {
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
}
}
}
(2)查找
A:基本查找
针对数组无序的情况

public static int getIndex(int[] arr,int value) {
int index = -1;

for(int x=0; x if(arr[x] == value) {
index = x;
break;
}
}

return index;
}
B:二分查找(折半查找)
针对数组有序的情况(千万不要先排序,在查找)

public static int binarySearch(int[] arr,int value) {
int min = 0;
int max = arr.length-1;
int mid = (min+max)/2;

while(arr[mid] != value) {
if(arr[mid] > value) {
max = mid - 1;
}else if(arr[mid] < value) {
min = mid + 1;
}

if(min > max) {
return -1;
}

mid = (min+max)/2;
}

return mid;
}
六、Character
(1)Character构造方法
Character ch = new Character('a');
(2)要掌握的方法
A:判断给定的字符是否是大写 public static boolean isUpperCase(char ch)
B:判断给定的字符是否是小写public static boolean isLowerCase(char ch)

C:判断给定的字符是否是数字字符public static boolean isDigit(char ch)
D:把给定的字符转成大写 
public static char toUpperCase(char ch)
E:把给定的字符转成小写 public static char toLowerCase(char ch)
七、Date
(1)Date是日期类,可以精确到毫秒。
A:构造方法
Date()
Date(long time)
B:成员方法
long getTime()
void setTime(long time)
(2)DateFormat针对日期进行格式化和针对字符串进行解析的类,但是是抽象类,所以使用其子类SimpleDateFormat
A:SimpleDateFormat(String pattern) 给定模式
yyyy-MM-dd HH:mm:ss
B:日期和字符串的转换
a:Date -- String
format()  public final String format(Date date)
b:String -- Date
parse()  public Date parse(String source)
八、Calendar
(1)日历类,封装了所有的日历字段值,通过统一的方法根据传入不同的日历字段可以获取值。
(2)如何得到一个日历对象呢?
Calendar rightNow = Calendar.getInstance();
本质返回的是子类对象
(3)成员方法
A:根据日历字段得到对应的值
public int get(int field)
B:根据日历字段和一个正负数确定是添加还是减去对应日历字段的值
public void add(int field,int amount)
C:设置日历对象的年月日public final void set(int year,int month,int date)
九、包装类--Integer
(1)为了让基本类型的数据进行更多的操作,Java就为每种基本类型提供了对应的包装类类型
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
(2)Integer的构造方法
A:Integer i = new Integer(100);
B:Integer i = new Integer("100");
注意:这里的字符串必须是由数字字符组成
(3)String和int的相互转换
A:String -- int
Integer.parseInt("100");
B:int -- String
String.valueOf(100);
(4)JDK5的新特性
自动装箱 基本类型--引用类型
自动拆箱 引用类型--基本类型
装箱:就是把基本类型用它们相对应的引用类型包起来,使它们可以具有对象的特质,如我们可以把 int型包装成 Integer类的对象
Integer i=1;
拆箱:就是跟装箱的方向相反,将 引用类型的对象重新简化为值类型的数据
int j=i;
(5)面试题
public class IntegerTest {
public static void main(String[] args) {
Integer i=100;
Integer j=100;
Integer x=200;
Integer y=200;
System.out.println(i==j);
System.out.println(i==100);
System.out.println(x==y);
System.out.println(x==200);
}
}
结果:
true
true
false
true
原因:
Integer i=100====>Integer i=Integer.valueOf(100);
Java 为了提高效率,Integer类中有一个数组缓存值从-128 到127的Integer对象。当我们调用 Integer.valueOf(i)( )的时候,如果 的值是 >=-128且<=127时,会直接从这个缓存中返回一个对象,否则就new一个Integer对象。

你可能感兴趣的:(JAVA)