并发性的: 你可以在其中执行许多语句,而不必一次执行它。
面向对象的:基于类和面向对象的编程语言。
独立性的: 支持一次编写,到处运行的独立编程语言,即编译后的代码可以在支持 Java 的所有平台上运行。
字节码是指的java程序编译后的结果。是一组8位字节为基础单位的二进制流
值传递 是指在调用函数时将实际参数复制一份到函数中,这样的话如果函数对其传递过来的形式参数进行修改,将不会影响到实际参数。
引用传递 是指在调用函数时将对象的地址直接传递到函数中,如果在对形式参数进行修改,将影响到实际参数的值。
下面是简单程度的理解
java实际只有值传递,并非是引用传递,非基础类型传递应当是地址作为值。
总结: 除了基本类型之外的,所有类型,包括数组的赋值,都是引用传递,这一句话就可以搞定了。
(不确定,后续修改)
== 和 equals 区别是什么
== 是 Java 中一种操作符,它有两种比较方式
public class DoubleCompareAndEquals {
Person person1 = new Person(24,"boy");
Person person2 = new Person(24,"girl");
int c = 10;
private void doubleCompare(){
int a = 10;
int b = 10;
System.out.println(a == b);
System.out.println(a == c);
System.out.println(person1.getId() == person2.getId());
}
}
的
private void equals(){
System.out.println(person1.getName().equals(person2.getName()));
}
equals 是 Java 中所有对象的父类,即 Object 类定义的一个方法。它只能比较对象,它表示的是引用双方的值是否相等。所以记住,并不是说 == 比较的就是引用是否相等,equals 比较的就是值,这需要区分来说的。
equals 用作对象之间的比较具有如下特性
在 Java 中,数据类型只有四类八种
byte 也就是字节,1 byte = 8 bits,byte 的默认值是 0 ;
short 占用两个字节,也就是 16 位,1 short = 16 bits,它的默认值也是 0 ;
int 占用四个字节,也就是 32 位,1 int = 32 bits,默认值是 0 ;
long 占用八个字节,也就是 64 位,1 long = 64 bits,默认值是 0L;
所以整数型的占用字节大小空间为 long > int > short > byte
浮点型有两种数据类型:float 和 double
float 是单精度浮点型,占用 4 位,1 float = 32 bits,默认值是 0.0f;
double 是双精度浮点型,占用 8 位,1 double = 64 bits,默认值是 0.0d;
字符型就是 char,char 类型是一个单一的 16 位 Unicode 字符,最小值是 \u0000 (也就是 0 ),最大值是 \uffff (即为 65535),char 数据类型可以存储任何字符,例如 char a = 'A'。
布尔型指的就是 boolean,boolean 只有两种值,true 或者是 false,只表示 1 位,默认值是 false。
以上 x 位都指的是在内存中的占用。
看文档。
看文档。
这个肯定是不一定的,举个非常简单的例子,你重写了 hashcode 方法,来算取余数,那么两个对象的 hashcode 很可能重复,但是两个对象的 equals 却不一定相同。
就算你不重写 hashcode 方法,我给你一段代码示例
String str1 = "通话"; String str2 = "重地"; System. out. println(String. format("str1:%d | str2:%d", str1. hashCode(),str2. hashCode())); System. out. println(str1. equals(str2));
上面两段代码的输出结果是
str1:1179395 | str2:1179395
false
这两个字符串的 equals 并不相同。也就是说,就算是 hashcode 相同的字符串,equals 也有可能不同。
一个或者两个,String s1 是声明了一个 String 类型的 s1 变量,它不是对象。使用 new 关键字会在堆中创建一个对象,另外一个对象是 abc ,它会在常量池中创建,所以一共创建了两个对象;如果 abc 在常量池中已经存在的话,那么就会创建一个对象。