JAVA复习之三

1、设计模式:单态设计模式

为了控制创建对象的个数,需要收回创建对象的权利,下面想办法设置Teacher为内存中唯一对象,在Text中创建并使用Teacher;

Teacher类中

public class Teacher 
{
	private static Teacher t;
	private Teacher()
	{
		
	}
	public static Teacher getTeacher()
	{
		if(t==null) t=new Teacher();
		return t;
	}
}

Text中

public class Text 
{
	public static void main(String[] args) 
	{
		Teacher t1=Teacher.getTeacher();
		Teacher t2=Teacher.getTeacher();
		if(t1==t2)
			System.out.println("same");
	}
}

2、设计模板(注意abstract的位置)

      


3、使用多态,设计一个物体的不同表现方式

让Dog、Cat、Monkey继承于Pet,然后通过对cry的重写,实现不同的操作

使用new为数组分配空间的时候,每个位置上的都是引用,而不是对象,还需通过后续赋值不断给每个位置生成一个新的对象


4、矩阵相乘

public Matrix multiply(Matrix b)
{
	if(b.row!=col)
	{
		System.out.println("Wrong");
		return null;//这里的return值要注意了;
	}
	else
	{
		Matrix t=new Matrix(row,b.col);
		for(int i=0;i<row;i++)
		{
			for(int j=0;j<b.col;j++)
			{
				t.m[i][j]=0;
				for(int k=0;k<col;k++)
				{
					t.m[i][j]+=m[i][k]*b.m[k][j];
				}
			}
		}
		return t;
	}
}

5、矩阵转置

public Matrix transpose()
{
	Matrix t=new Matrix(row,col);
	for(int i=0;i<col;i++)
	{
		for(int j=0;j<row;j++)
		{
			t.m[i][j]=m[j][i];
		}
	}
	return t;
}

6、Random的使用

Random ra=new Random();
int rai=ra.nextInt(n);//生成随机数;

Random对象的生成

Random类包含两个构造方法   

(1)使用一个和当前系统时间对应的相对时间有关的数字作为种子数,然后使用这个种子数构造Random对象。

public Random()

(2)通过制定一个种子数进行创建。 

public Random(long seed)

(3)示例代码:

Random r = new Random();
Random r1 = new Random(10);

种子数只是随机算法的起源数字,和生成的随机数字的区间无关。


Random类中的常用方法

Random类中各方法生成的随机数字都是均匀分布的,也就是说区间内部的数字生成的几率是均等的。

public boolean nextBoolean()
作用是生成一个随机的boolean值,生成true和false的值几率相等,也就是都是50%的几率。
public double nextDouble()
该方法的作用是生成一个随机的double值,数值介于[0,1.0)之间。
public int nextInt()
该方法的作用是生成一个随机的int值,该值介于int的区间,也就是-231到231-1之间。如果需要生成指定区间的int值,则需要进行一定的数学变换,具体可以参看下面的使用示例中的代码。
public int nextInt(int n)
该方法的作用是生成一个随机的int值,该值介于[0,n)的区间,也就是0到n之间的随机int值,包含0而不包含n。
public void setSeed(long seed)
该方法的作用是重新设置Random对象中的种子数。设置完种子数以后的Random对象和相同种子数使用new关键字创建出的Random对象相同。

Random类使用示例

(1)生成任意小数

double d1 = r.nextDouble();//生成[0,1.0)区间的小数
double d2 = r.nextDouble() * 5;//生成[0,5.0)区间的小数
double d3 = r.nextDouble() * 1.5 + 1;//如果没有后面的+1,就是[0,1.5),但是有+1,则范围是[1,2.5)
  • 生成[0,d)区间的随机小数,d为任意正的小数,则只需要将nextDouble方法的返回值乘以d即可。
  • 生成任意非从0开始的小数区间[d1,d2)范围的随机数字(其中d1不等于0),则只需要首先生成[0,d2-d1)区间的随机数字,然后将生成的随机数字区间加上d1即可。

(2)生成任意整数

int n1 = r.nextInt();//生成[-231,231)区间的整数
int n2 = r.nextInt(10);//生成[0,10)区间的整数
n2 = Math.abs(r.nextInt() % 10);//生成[0,10)区间的整数

(3)生成(-n,n)之间的整数

int n2 = r.nextInt() % n;

7、java中next()和nextLine()方法的区别

  • next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符,next()方法不能得到带空格的字符串。也就是说,当读取到有效字符的时候,next()方法会将其后输入的空格键、Tab键或Enter键当成结束符。
  • nextLine()方法的结束符只是Enter键,即nextLine()方法返回的是Enter键之前的所有字符,它是可以得到带空格的字符串。nextLine()方法会读取改行从前到的所有的内容,包括换行符,然后把焦点移动到下一行的开头,停止读入。

8、如何能保证是重写而不是重载呢?

通过@Override

@Override
public String toString()
{
	return "编号为"+this.getNo()+"、姓名为"+this.getName()+"、年龄为"+this.getAge()+"的"+this.getSeminary()+"学院老师";
}

9、System.in也是InputStream类型的

(1)InputStream的子类
直接子类有:FileInputStream, ObjectInputStream,System.in
间接子类有:BufferedInputStream(FileInputStream),DataInputStream(FileInputStream)

(2)Reader的子类
直接子类有:BufferedReader, InputStreamReader
间接子类有:FileReader(InputStreamReader)

(3)OutputStream的子类
直接子类有:ObjectOutputStream
间接子类有: DataOutputStream,FileOutputStream

(4)Writer的子类
直接子类有:BufferedWriter, OutputStreamWriter
间接子类有: FileWriter, PrintWriter


10、split

String test="no pains,no gains!";
String []a=test.split(" |,|!");//以空格、逗号和叹号作为分隔符;


11、实验三:字符串回文

https://blog.csdn.net/fighting123678/article/details/83713297

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值