最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

JAVA基础类库(第四周)(三只松鼠,奥利给)

IT圈 admin 1浏览 0评论

JAVA基础类库(第四周)(三只松鼠,奥利给)

目录

1.包装类基本知识

2.自动装箱和拆箱

4.包装类时空指针异常的情况

5.包装类时的缓存数组

注:JAVA里的源代码查看可以通过鼠标放在需要查看的源代码上然后在左下角找到第一个光标就是源代码查看方法。

6.String类,StringBuffer类和StringBuilder类

7.Math类

8.Random类(比Math中的随机数方法提供了更多形式生成随机数的方法)

1.包装类基本知识

JAVA是面向对象的语言,但不是纯面向对象的语言,很多经常用到的基本数据类型就不是对象,但我们需要将基本数据转化为对象,以便于操作,为了解决这一问题,JAVA在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样的八个和基本数据类型对应的类称为包装类。

基本数据类型对应的包装类
基本数据类型            包装类
intInteger
charCharacter
floatFloat
doubleDouble
byteByte
longLong
shortShort
booleanBoolean

基本类中有基本构造方法,以Integer为例:

Integer(int value)构造一个新分配的Integer对象,他表示指定的int值

Integer(String s)构造一个新分配的Integer对象,他表示String参数所指的int值

基本类中有一些常用方法:如下所示

package www.azhe.com;public class TestWrapper {public static void main(String[] args) {// TODO Auto-generated method stub
Integer a=new Integer (3);
Integer b=Integer.valueOf(30);
int c=a.intValue();
System.out.print(c);}}

下图为运行结果:

其他一些方法类似:

2.自动装箱和拆箱

1.自动装箱:

Integer i=100//自动装箱

//编译器自动调用下面语法来编译:

Integer i=Integer.valueOf(100)//使用的是valueOf(100),而不是new Integer(100)

 

自动拆箱:

Integer i=100;int j=i;//自动拆箱
//相当于调用以下语法编译
int j =i.intvalue();

4.包装类时空指针异常的情况

若包装类时出现空对象,就会出现异常,如下图所示,需要将null空指针情况排除,才能正常运行。

5.包装类时的缓存数组

创建包装类时系统会自动创建一个缓存数组

,创建一个[-128,127]之间的一个缓存数组,当调用valueOf()时,首先会检查是否位于[-128,127]之间,如果是在这个区间,就会使用这个包装类,否则会新建一个Integer包装类,我们可以查看JAVA的源代码,发现该缓存数组如下。

 

注:JAVA里的源代码查看可以通过鼠标放在需要查看的源代码上然后在左下角找到第一个光标就是源代码查看方法。

 

 

下面通过==证明两个对象是否同一对象,如下所示:

 

 

6.String类,StringBuffer类和StringBuilder类

 1.String类

以下给出所有String类方法

 

 

 

下面给出部分示例:

1.字符串长度


String s = "世界nihao";
int n = s.length();

注意:
中文字符和英文字符都只占1个字符,与c++不同。

2. 空字符串:长度为0的字符串

String s = "";
int n = s.length();

注意:
空字符串和null是两回事。空字符串是一个正常的字符串对象,null不指向任何对象。
3.查找 indexOf
如果有这个子串,则返回位置索引;否则返回-1

String s = "I love xxx";int pos = s.indexOf("love");if(pos ==-1){System.out.println("wwrong");}


默认 indexOf() 从开头开始查找
int p = str.indexOf (“love”);

实际上,也可以指定从第几个字符开始查找
int p = str.indexOf(“love”, 2);
参数从index=2位置往后查找
4.字符串去空格trim()

trim()可以去掉字符串两端的空格

但内部的空格无法删除

5.字符串拆分split()

空格内表示遇到该符号将进行拆分,拆分的数据讲义字符串数组的形式返回。

String s ="小张/小王/小李";
String[] names = s.split("/");
for(int i=0; i<names.length; i++)
{
    String name = names[i].trim();
    System.out.println(name);
}

6.按字典顺序比较大小 

String s1 = "wanzgherongyao";String s2 = "yingxionglianmeng";	if( s1.compareTo( s2 ) < 0)System.out.println(s1 + "在前");else System.out.println(s2 + "在前");

如果忽略字母的大小写的话,用compareToIgnoreCase()

String s1 = "WangZherongyao";String s2 = "YingxionglianMENG";	if( s1.compareTognoreCase( s2 ) < 0)System.out.println(s1 + "在前");else System.out.println(s2 + "在前");

 

2.首先,StringBuilder类和StringBuffer类都是可变字符序列,但Builder线程不安全的,Buffer是线程安全的,因此Builder效率更高。

StringBuffer类的常用方法
StringBuffer append(String str)向StringBuffer追加内容str
StringBuffer append(StringBuffer sb)向StringBuffer追加StringBuffer的内容
StringBuffer append(char c)向StringBuffer追加c
StringBuffer delete (int start,int end)删除指定范围的字符串
StringBuffer insert(int offset,String str)在指定位置加上指定字符串,可连续插入
StringBuffer reverse()将字符串倒置输出
StringBuffer setCharAt(int offset ,String str)在指定位置插入指定字符串,不可连续插入

1.append方法

注:重点关注StringBuffer的append函数,效率要远远高于利用"+"来链接字符串,尤其在使用循环时

下面给出两种写法的示例:

一旦循环次数高起来,使用“+”,会导致系统崩溃,主要原因在于,工程建立后,大量用户调用该函数,同时进行多次该循环,耗费大量内存导致系统崩溃,而append在使用时不会创建内存,非常实用而且效率很高。

2.reverse方法

如程序运行所示,reverse将序列倒置。

3.delete方法,insert方法以及setCharAt方法的使用

 

 

注:insert方法在调用时会自动返回该类,原因是源代码中有return函数,因此在后面继续加.,可以连续调用。

7.Math类

基本和c++类似

几个常用方法如下所示:

 

Math类是一个工具类,主要用于完成复杂的数学运算,如求绝对值、三角函数、指数运算等。

由于Math类的构造方法被定义成private,因此无法创建Math类的对象。

Math类中的所有方法都是静态方法,可以直接通过类名来调用它们。

除静态方法外,Math类中还有两个静态常量PI和E,分别代表数学中的π和e

 

package com.azhe.www;public class MathTest {public static void main(String[] args) {System.out.println("计算绝对值:"+Math.abs(-4));//double,float,int,longSystem.out.println("计算正弦值:"+Math.sin(1.57));//doubleSystem.out.println("计算余弦值:"+Math.cos(2.0));//doubleSystem.out.println("计算正切值:"+Math.tan(0.8));//doubleSystem.out.println("计算平方根:"+Math.sqrt(4));//doubleSystem.out.println("计算立方根:"+Math.cbrt(27));//doubleSystem.out.println("计算乘方:"+Math.pow(2, 3));//2的3次方System.out.println("求大于参数的最小整数:"+Math.ceil(4.6));//doubleSystem.out.println("求小于参数的最大整数:"+Math.floor(-5.2));//doubleSystem.out.println("对小数进行四舍五入:"+Math.round(-8.6));//double,floatSystem.out.println("求两个数的较大值:"+Math.max(5.1, 5.7));//double,float,int,longSystem.out.println("求两个数的较小值:"+Math.min(3, 8.4));//double,float,int,longSystem.out.println("生成一个大于等于0.0小于1.0的随机数:"+Math.random());}
}

程序运行如下所示:

 

8.Random类(比Math中的随机数方法提供了更多形式生成随机数的方法)

如下是常用的Random方法的使用

 

下面给出具体代码使用Random方法:

package www。azhe。com;
import java.util.Random;    // 这一行import不能少!
public class TestRandom
{public static void main(String[] args){Random rand = new Random();		for(int i=0; i< 3; i++){int s = rand.nextInt(1000); //表示生成从0(包括)到1000(不包括)的随机数System.out.println("生成随机数: " + s);}}
}

 

 

 

JAVA基础类库(第四周)(三只松鼠,奥利给)

目录

1.包装类基本知识

2.自动装箱和拆箱

4.包装类时空指针异常的情况

5.包装类时的缓存数组

注:JAVA里的源代码查看可以通过鼠标放在需要查看的源代码上然后在左下角找到第一个光标就是源代码查看方法。

6.String类,StringBuffer类和StringBuilder类

7.Math类

8.Random类(比Math中的随机数方法提供了更多形式生成随机数的方法)

1.包装类基本知识

JAVA是面向对象的语言,但不是纯面向对象的语言,很多经常用到的基本数据类型就不是对象,但我们需要将基本数据转化为对象,以便于操作,为了解决这一问题,JAVA在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样的八个和基本数据类型对应的类称为包装类。

基本数据类型对应的包装类
基本数据类型            包装类
intInteger
charCharacter
floatFloat
doubleDouble
byteByte
longLong
shortShort
booleanBoolean

基本类中有基本构造方法,以Integer为例:

Integer(int value)构造一个新分配的Integer对象,他表示指定的int值

Integer(String s)构造一个新分配的Integer对象,他表示String参数所指的int值

基本类中有一些常用方法:如下所示

package www.azhe.com;public class TestWrapper {public static void main(String[] args) {// TODO Auto-generated method stub
Integer a=new Integer (3);
Integer b=Integer.valueOf(30);
int c=a.intValue();
System.out.print(c);}}

下图为运行结果:

其他一些方法类似:

2.自动装箱和拆箱

1.自动装箱:

Integer i=100//自动装箱

//编译器自动调用下面语法来编译:

Integer i=Integer.valueOf(100)//使用的是valueOf(100),而不是new Integer(100)

 

自动拆箱:

Integer i=100;int j=i;//自动拆箱
//相当于调用以下语法编译
int j =i.intvalue();

4.包装类时空指针异常的情况

若包装类时出现空对象,就会出现异常,如下图所示,需要将null空指针情况排除,才能正常运行。

5.包装类时的缓存数组

创建包装类时系统会自动创建一个缓存数组

,创建一个[-128,127]之间的一个缓存数组,当调用valueOf()时,首先会检查是否位于[-128,127]之间,如果是在这个区间,就会使用这个包装类,否则会新建一个Integer包装类,我们可以查看JAVA的源代码,发现该缓存数组如下。

 

注:JAVA里的源代码查看可以通过鼠标放在需要查看的源代码上然后在左下角找到第一个光标就是源代码查看方法。

 

 

下面通过==证明两个对象是否同一对象,如下所示:

 

 

6.String类,StringBuffer类和StringBuilder类

 1.String类

以下给出所有String类方法

 

 

 

下面给出部分示例:

1.字符串长度


String s = "世界nihao";
int n = s.length();

注意:
中文字符和英文字符都只占1个字符,与c++不同。

2. 空字符串:长度为0的字符串

String s = "";
int n = s.length();

注意:
空字符串和null是两回事。空字符串是一个正常的字符串对象,null不指向任何对象。
3.查找 indexOf
如果有这个子串,则返回位置索引;否则返回-1

String s = "I love xxx";int pos = s.indexOf("love");if(pos ==-1){System.out.println("wwrong");}


默认 indexOf() 从开头开始查找
int p = str.indexOf (“love”);

实际上,也可以指定从第几个字符开始查找
int p = str.indexOf(“love”, 2);
参数从index=2位置往后查找
4.字符串去空格trim()

trim()可以去掉字符串两端的空格

但内部的空格无法删除

5.字符串拆分split()

空格内表示遇到该符号将进行拆分,拆分的数据讲义字符串数组的形式返回。

String s ="小张/小王/小李";
String[] names = s.split("/");
for(int i=0; i<names.length; i++)
{
    String name = names[i].trim();
    System.out.println(name);
}

6.按字典顺序比较大小 

String s1 = "wanzgherongyao";String s2 = "yingxionglianmeng";	if( s1.compareTo( s2 ) < 0)System.out.println(s1 + "在前");else System.out.println(s2 + "在前");

如果忽略字母的大小写的话,用compareToIgnoreCase()

String s1 = "WangZherongyao";String s2 = "YingxionglianMENG";	if( s1.compareTognoreCase( s2 ) < 0)System.out.println(s1 + "在前");else System.out.println(s2 + "在前");

 

2.首先,StringBuilder类和StringBuffer类都是可变字符序列,但Builder线程不安全的,Buffer是线程安全的,因此Builder效率更高。

StringBuffer类的常用方法
StringBuffer append(String str)向StringBuffer追加内容str
StringBuffer append(StringBuffer sb)向StringBuffer追加StringBuffer的内容
StringBuffer append(char c)向StringBuffer追加c
StringBuffer delete (int start,int end)删除指定范围的字符串
StringBuffer insert(int offset,String str)在指定位置加上指定字符串,可连续插入
StringBuffer reverse()将字符串倒置输出
StringBuffer setCharAt(int offset ,String str)在指定位置插入指定字符串,不可连续插入

1.append方法

注:重点关注StringBuffer的append函数,效率要远远高于利用"+"来链接字符串,尤其在使用循环时

下面给出两种写法的示例:

一旦循环次数高起来,使用“+”,会导致系统崩溃,主要原因在于,工程建立后,大量用户调用该函数,同时进行多次该循环,耗费大量内存导致系统崩溃,而append在使用时不会创建内存,非常实用而且效率很高。

2.reverse方法

如程序运行所示,reverse将序列倒置。

3.delete方法,insert方法以及setCharAt方法的使用

 

 

注:insert方法在调用时会自动返回该类,原因是源代码中有return函数,因此在后面继续加.,可以连续调用。

7.Math类

基本和c++类似

几个常用方法如下所示:

 

Math类是一个工具类,主要用于完成复杂的数学运算,如求绝对值、三角函数、指数运算等。

由于Math类的构造方法被定义成private,因此无法创建Math类的对象。

Math类中的所有方法都是静态方法,可以直接通过类名来调用它们。

除静态方法外,Math类中还有两个静态常量PI和E,分别代表数学中的π和e

 

package com.azhe.www;public class MathTest {public static void main(String[] args) {System.out.println("计算绝对值:"+Math.abs(-4));//double,float,int,longSystem.out.println("计算正弦值:"+Math.sin(1.57));//doubleSystem.out.println("计算余弦值:"+Math.cos(2.0));//doubleSystem.out.println("计算正切值:"+Math.tan(0.8));//doubleSystem.out.println("计算平方根:"+Math.sqrt(4));//doubleSystem.out.println("计算立方根:"+Math.cbrt(27));//doubleSystem.out.println("计算乘方:"+Math.pow(2, 3));//2的3次方System.out.println("求大于参数的最小整数:"+Math.ceil(4.6));//doubleSystem.out.println("求小于参数的最大整数:"+Math.floor(-5.2));//doubleSystem.out.println("对小数进行四舍五入:"+Math.round(-8.6));//double,floatSystem.out.println("求两个数的较大值:"+Math.max(5.1, 5.7));//double,float,int,longSystem.out.println("求两个数的较小值:"+Math.min(3, 8.4));//double,float,int,longSystem.out.println("生成一个大于等于0.0小于1.0的随机数:"+Math.random());}
}

程序运行如下所示:

 

8.Random类(比Math中的随机数方法提供了更多形式生成随机数的方法)

如下是常用的Random方法的使用

 

下面给出具体代码使用Random方法:

package www。azhe。com;
import java.util.Random;    // 这一行import不能少!
public class TestRandom
{public static void main(String[] args){Random rand = new Random();		for(int i=0; i< 3; i++){int s = rand.nextInt(1000); //表示生成从0(包括)到1000(不包括)的随机数System.out.println("生成随机数: " + s);}}
}

 

 

 

发布评论

评论列表 (0)

  1. 暂无评论