搞钱路子一天两万,郑州黑帽seo培训,wordpress不显示标题,南昌大学作风建设网站问题一#xff1a;与equal的区别#xff1f; 和 equals 都是比较的,而前者是运算符,后者则是一个方法,基本数据类型和引用数据类型都可以使用运算符,而只有引用类型数据才可以使用 equals,下面具体介绍一下两者的用法以及区别. 操作符专门用来比较两个变量的值是否相等#…问题一与equal的区别 和 equals 都是比较的,而前者是运算符,后者则是一个方法,基本数据类型和引用数据类型都可以使用运算符,而只有引用类型数据才可以使用 equals,下面具体介绍一下两者的用法以及区别. 操作符专门用来比较两个变量的值是否相等也就是用于比较变量所对应的内存中所存储的数值是否相同要比较两个基本类型的数据或两个引用变量是否相等只能用操作符。 如果一个变量指向的数据是对象类型的那么这时候涉及了两块内存对象本身占用一块内存堆内存变量也占用一块内存例如 Objet obj new Object();变量 obj是一个内存 new Object()是另一个内存此时变量 obj 所对应的内存中存储的数值就是对象占用的那块内存的首地址。对于指向对象类型的变量如果要比较两个变量是否指向同一个对象即要看这两个变量所对应的内存中的数值是否相等这时候就需要用操作符进行比较。equals 方法是用于比较两个独立对象的内容是否相同就好比去比较两个人的长相是否相同它比较的两个对象是独立的。例如对于下面的代码 String anew String(heima); String bnew String(heima); 两条 new 语句创建了两个对象然后用 a,b 这两个变量分别指向了其中一个对象这是两个不同的对象它们的首地址是不同的即 a 和 b 中存储的数值是不相同的所以表达式 ab 将返回 false而这两个对象中的内容是相同的所以表达式 a.equals(b)将返回 true。 equals 本身是一个方法,它是根类 Object 里边的方法,所有类和接口都直接或者间接继承自 Object,所以在所有的类中都有 equals()方法,都是继承来的, 在实际开发中我们经常要比较传递进行来的字符串内容是否等例如 String input …;input.equals(“quit” )许多人稍不注意就使用进行比较了这是错误的随便从网上找几个项目实战的教学视频看看里面就有大量这样的错误。记住字符串的比较基本上都是使用 equals 方法。 如果一个类没有自己定义 equals 方法那么它将继承 Object 类的 equals 方法Object 类的 equals 方法的实现代码如下 boolean equals(Object o){
return thiso;
} 这说明如果一个类没有自己定义 equals 方法它默认的 equals 方法从 Object类继承的就是使用操作符也是在比较两个变量指向的对象是否是同一对象这时候使用 equals 和使用会得到同样的结果如果比较的是两个独立的对象则总返回 false。如果你编写的类希望能够比较该类创建的两个实例对象的内容是否相同那么你必须覆盖equals 方法由你自己写代码来决定在什么情况即可认为两个对象的内容是相同的。代码,试一下 equals 和的区别 /*
* 和 equals 的用法以及区别
* */
public class TestEqulas{
public static void main(String[] args) {
String s new String(heima);
String s2 new String(heima);
System.out.println(s.equals(s2));//输出 true,因为 String 类已经重写了 equals
System.out.println(s s2);//输出 false,因为两者的地址是不同的
//创建三个动物对象
//a1 和 a2name 和 age 都相同
Animal a1 new Animal(Tom,5);
Animal a2 new Animal(Tom,5);
//先试一下用比较链各个对象
System.out.println(a1 a2);
//输出 false,两个对象内容相同,但是他们的引用首地址不同
// 首先将自己写的 equals 方法注释掉,看输出结果是什么
boolean b a1.equals(a2);
System.out.println(b);//结果为 false,证明是调用的继承来的那个 equals 方法
// 然后我们调用自己已经重写的 equals,再看下结果
b a1.equals(a2);//现在调用的是已经重写后的方法
System.out.println(b);//所以打印的是 true}} public class Animal {private String name;private int age;public Animal() {}public Animal(String name, int age) {this.name name;this.age age;}public void setName(String name) {this.name name;}public String getName() {return name;}public void setAge(int age) {this.age age;}public int getAge() {return age;}// 重写了 equals 方法public boolean equals(Object o) {// 判断两个对象是否为同一个对象,如果是就直接返回 trueif (this o) {return true;}// 再判断另一个对象 o 是否是 null,如果是 null 就没有必要再比了,肯定不相等,直接返回if (o null) {return false;}if (o instanceof Animal) {// 如果是当前类的实例那么就强制转换成当前类的实例再依次比较成员变量是否相等Animal s (Animal) o;// 注意 String 类型的成员变量也可以看做是一个 String 对象需要用 equals 比较而不能用比较if (this.getName().equals(s.name) this.age s.age) {return true;}}return false;}
} 问题二质数问题 package com.oumyye.质数;import java.util.Random;public class Snippet {public static void main(String[] args){Random rd new Random(); //定义一个随机变量int i rd.nextInt(1000); //获取个随机数System.out.println(isNum(i)); //输出结果}public static String isNum(int i ){String ret i是质数; //默认是质数if(i2)return ret; //如果是 2 返回默认结果for (int j 2; j i/2; j) { //制订循环次数if(i%j0){reti不是质数; // 如果能够整除返回不是质数break;}}return ret; //返回结果}
} 问题三求解5阶螺旋矩阵问题 1 2 3 4 5 16 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9 public class LXJZQJ {public static void main(String[] args) {int n 5;// 0:向右,1:向下,2:向左,3向上int direction 0;// 行列int row 0, col 0;int num 0;int[] array new int[n * n];while (array[row * n col] 0) {num;array[row * n col] num;switch (direction) {case 0:col;break;case 1:row;break;case 2:col--;break;case 3:row--;break;}if (row n || col n || row -1 || col -1|| array[row * n col] ! 0) {direction;if (direction 4)direction 0;switch (direction) {case 0:row;col;break;case 1:row;col--;break;case 2:row--;col--;break;case 3:row--;col;break;}}}for (int i 0; i n; i) {for (int j 0; j n; j) {System.out.printf(%-3s, array[i * n j]);}System.out.println();}}
} 转载于:https://www.cnblogs.com/oumyye/p/4280454.html