四个原生类--Java语言(jdk自带的工具类)*

  • The Math class

Math.random()

static double random() ,返回值是0~1,一个小数,0可以取到,1取不到,最大值是0.99999....

class Test{
	public static void main(String args[]){
		System.out.println(Math.random());
	}
}

 如果对其进行强制类型转换:  结果只能取到0,一直为0;

System.out.println((int)(Math.random())); 

所以需要乘一个10,可以得到0-9的整数,这10个数字,

如果要获得1-10的随机数,就+1,即可。

System.out.println(1+(int)(10*Math.random()));

 static double abs(double x)  绝对值

static int abs(int abs)

static double sqrt(double x) 开根号,算出x的平方根,注意x必须为正数

static double pow(double base,double exponent)

pow(2,10) 代表 2的10次方。

  • The String class

String target ="abc";
String target2=new String("abc");
System.out.println(target.equals(target2));

int length()---字符串的长度

class Test{
	public static void main(String args[]){
		String target="abcde";
		System.out.println(target.length());
	}
}

 substring() 

  1. String substring(int from ,int to)-------意思是从哪里开始到哪里结束。截出来一串字符串,from 是从哪里开始(包括), to是从哪里结束(不包含)  
class Test{
	public static void main(String args[]){
		String target="abcdefg";
		System.out.println(target.substring(2,6));
		System.out.println(target);
	}
}

 substing 将返回值截取某一段出来,但是不会改变字符串的值。

        2.String substring(int from) -----意思是从from开始到末尾结束,仍然不改变字符串的大小。

 int indexOf(String str) 在当前字符串里面,str首次出现的位置

class Test{
	public static void main(String args[]){
		String target="abcdefgcdcd";
		//将会返回cd首次出现的位置
		System.out.println(target.indexOf("cd"));
	
	}
}

两种用法,找到参数里的字符串,他在原有字符串中首次出现的位置。但如果没有的话就会显示-1

(注意:这里面的h用的是单引号,单引号用于单个字符,双引号也不会报错)

class Test{
	public static void main(String args[]){
		String target="abcdefg";
		System.out.println(target.indexOf('h'));	
	}
}

 int compareTo(String other)

相当于是做减号,当字符串长度相同时,比较字符串中字母的大小,对字母表中的排序进行排序的减法

字符串长度不同时,结果比较的是字符串长度的差值

                Returns 0 if the value of this Integer is equal to the value of other, a negative integer if it is less than the value of other, and a positive integer if it is greater than the value of other.
class Test{
	public static void main(String args[]){
		//结果是-4,剪的是字符串的长度
		String target="cd";
		String target2="cdedhs";
		System.out.println(target.compareTo(target2));	
		//结果是1 ,减的是不同位开始字母的顺序
		String target="cdf";
		String target2="cdedhs";
		System.out.println(target.compareTo(target2));	
		//当两个字符串的位数和内容完全相同时,结果会是0
	}
}

char charAt(int Pos)

用来显示字符串中相应位置的字符

但如果没有这个位置的字符,会报错,字符串越界异常 ,结果产生的错误是在运行的时候产生的,而不是在编译的时候产生的,叫做异常Exception

equals 和 ==  的区别,equals 测试String的内容,然而 == 会比较String作为本类创建的对象不同引用

  • The Array (1 dimension and 2 demension)

An ordered sequence of something makes an  array.

conception:相同类型元素的有序集合

分类:静态数组Array、和动态数组

静态数组Array:数组的长度(元素的个数)不可以改变;动态则表示数组的长度可以改变。

静态数组的声明

type[] Name = new Type[n]; //表示静态数组的长度

type[]:表示数组的类型,【】表示生成的数组是一维的(这个静态数组的元素是一行,所有的元素是在同一行写完的)

Name:数组的名字

new:调用构造函数(熟悉)

Type[n] :静态数组的构造函数,n表示的是静态数组的长度,即表示可以放入多少个元素。

例: int[] scores={6,6,6,6,6};   定义了一个名为scores 类型为整数的数组,有5个元素,每个元素的值为6,

怎么获得数组的长度呢?

final int attribute of length 属性,例如 name.length;   scores.length 之类

数组除了定义基本数据类型还有引用数据类型

Human[] group ={new Human("Josh"),new Human("Andy")};

指的是 group 这个数组里面有两个元素,长度为2 ;用new 关键字调用Human这个类的构造函数生成Human类的对象,一个名为Josh 一个名为Andy

对于静态数组来说,计数的时候,首个元素和字符串是一样的,是从0开始而不是从1开始,

int i = scores[0]; //表示scores数组里面的第一个元素的这个基本数据类型的值 
Human a = group[1]; // 引用数据类型group里面的Andy这个引用,注意是引用不是对象

二维静态数组 

比如生成一个2行3列的数组

int rowNumber =2;
int columnNumber =3;
double[][] a= new double[rowNumber][columNumber];

对于二维数组来说

a.length返回行数(number of rows);

a[0].length 返回列的数目  (number of column),这种一维的表示方法指的是第一行里面有多少个元素,就代表2维静态数组有多少列。如果一共就2行,写了个a[5].length 就会有风险,就会有异常,报错,所以写a[0]用来表示列数,一定不会出错。

练习

class Test{
	public static void main(String args[]){
		int[][] numbers=new int[10][10];
		for(int i=0;i<10;i++){
			for(int j=0;j<10;j++){
            //把当前数组中第i行第j列,进行赋值
            //第一行都是1,第二行都是2,第三行都是数字3
				numbers[i][j]=i+1;
				
			}
		}
		//当对一个不知道几行几列的数组进行操作时,需要用numbers.length获得行数,numbers[0].length获得列数
		for(int i=0;i<numbers.length;i++){
			for(int j=0;j<numbers[0].length;j++){
				//打印当前元素的值
				System.out.print(numbers[i][j]+" ");
			}
			System.out.println();
		}
}
	
}

 静态数组的长度不能改变,可以把数组里的某一个值无论是基本还是引用,可以进行改变,

  • The ArrayList implements from list  

动态数组list ,这个接口interface类里面,定义了,一个动态数组所具备的全部行为,数组中的元素和长度是可以改变的

动态数组里的元素的长度和个数是可以改变的,可以增加或者减少里面的元素

只有ArrayList类里面才有能够改变数组元素的个数的方法、

实现list接口的类 是ArrayList   ,

list 是一个接口,有很多类可以实现,其中一种叫做ArrayList,而Array指的是静态数组,是指的用一个Array 来实现一个list,用一个静态数组,来实现一个动态数组。

用法:

ArrayList<Double> samples = new ArrayList<Double>();

注意D是大写的,

ArrayList 里面只可以放引用数据类型,不能放primitive type ,

两个尖括号里的数据类型要保持一致;

动态数组中的() 里面是不用填写数值的,因为数组的长度是可以发生改变的,放的多回自动长大,放的少也会自动缩小。

考试中需要掌握的方法有如下六个:

int size()   动态数组的长度,注意是一个方法,而不是属性,

boolean add(E obj)   往动态数组里加入元素,注意是加到最后一位,add()的返回值是boolean类型的,且永远会是true。

void add(int index ,E obj)  两个参数,表示可以把这个元素放在中间的位置,index是几,就表示要把它放在动态数组的第几位,后面的元的index会以此往后顺延,注意没有返回值。

E get(int index) ,get方法用来获得当前数组某一位上的元素值,比如这个动态数组中有三个元素 0,1,2,进行get(3),但是数组里没有第4个元素,这时计算机就会报错。返回值就是元素 的引用,

E set(int index)  , set动态数组的值不发生改变,而是设置的意思,add会增加数组的长度,但是set 不会,set会让动态数组的长度不变,只是让某一位的值替换为其他位的值,set也会有返回值,会将被替换的旧的那一位进行返回。

E remove(int index),删除,删除的谁,就会把谁的引用返回。

在一个静态或者动态数组里面,能否存储不同的数据类型?

Different data types elements in Array or List

import java.util.Arraylist

class Test{
		public static void main(String args[]){
			int[] a={34,56,78,91,11,22};
			//list 是接口类,ArrayList来实现这个接口类
			//子类对象可以给这个父类的引用
			//好处在于,后面的对象可以更加灵活,list实现的对象有很多,不止这一个
			List<String> article=new ArrayList<String>();
			//可不可以在这个数组里面放不同类型的数据呢?
			
			//不同类型的数据元素要求具有相同的父类
			List<Human> s = new ArrayList<Human>();
			//既可以添加学生类的对象,也可以添加老师类的对象,
			//以及人类的对象,从这个角度而言,确实可以将不同类别的元素放进去,
			
			//所以这个不同类型的元素呢,要么是父类本身要么是父类的子类。
			s.add(xxx)
		}


}

Wrapper class

将一个基本数据类型,赋予成一个对象的概念,尤其是在动态数组List当中,只能存放引用数据类型,也就是wrapper class

import java.util.Arraylist

class Test{
		public static void main(String args[]){
			int[] a={34,56,78,91,11,22};
			int b=10;
			//c 在这里相当于一个引用数据类型,c存放的是abc在内存中存放的地址
			String c="abc";
			
			//int 对应的引用数据类型叫做Integer
			//这将会在内存中,有一块区域,不仅存放了10,还存放Integer这个类里面相应的很多method,属性
			Integer B=10;
			Integer B=new Integer(10);//标准写法
			//对应的wrapper class
			int Integer
			boolean Boolean 
			double Double 
			char Character
			
			//放在数组当中,就必须要使用这些包装类
			List<Integer>
		}


}

Traverse 遍历 an array or list

import java.util.Arraylist

class Test{
		public static void main(String args[]){
			int[] a={34,56,78,91,11,22};//Array
			Integer[] a//没有问题
			List<int>//动态数组这样写就不对
			List<Integer>//ArrayList
		}
}

import java.util.Arraylist

class Test{
		public static void main(String args[]){
			int[] a={34,56,78,91,11,22,33};//Array
			//数组的遍历,将数组里的每一个值进行遍历
			//既然遍历那么必然会进行循环,从首位到最后一位
			
			//从第一个元素开始遍历,a.length数组的长度,
			for(int index=0;index<a.length;index++){
				System.out.println(a[index]);
			}
		}
}

for-each loop

import java.util.ArrayList;

class Test{
		public static void main(String args[]){
			int[] a={34,56,78,91,11,22,33};//Array
			
			for(int index=0; index<a.length; index++){
				System.out.println(a[index]);
			}
			System.out.println("it is the for each loop below:");
			//for each loop
//增强型的for循环,是通过一个冒号,把一个语句分割成两个部分,
//冒号的右侧是带循环的数组,可以是静态的也可是动态的,,
//冒号的左侧是target/数组里的每一个元素的代表,上面的index指的是位置
//a表示要循环的数组,
            //记得声明target这个变量 的类型,和数组的元素类型保持一致
			for(int target :a){
                //打印数组里的每一位
				System.out.println(target);
			}
	
		}
		
		
}

 增强型的for循环可以自动的从第一位遍历到最后一位,但是也有缺点:

1.万一不是要循环遍历每一个元素,而是取中间的一小节,那么就不可以使用for each loop

2.没有元素的具体位置,只能得到值,如果想改变某个具体位置的值,是遍历不到的

import java.util.ArrayList;

class Test{
		public static void main(String args[]){
			int[] a={34,56,78,91,11,22,33};//Array
			
			for(int index=0; index<a.length; index++){
				System.out.println(a[index]);
				//把计数位的值,增大一倍
				if(index%2==1){
					a[index]*=2;
				}
			}
			System.out.println("it is the for each loop below:");
			//for each loop
			for(int target :a){
				System.out.println(target);
			}
	
		}
		
		
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值