1、java变量及作用范围

java变量可分为:静态变量、局部变量、成员变量

  1. 静态变量:是指static关键字修饰的变量,生命周期由所在类决定;
  2. 局部变量:定义在方法里的变量、方法的参数或者代码块里定义的变量,作用范围用大括号{}来界定;
  3. 成员变量:类中没有用static修饰的变量,声明周期由对象决定。

2、Java的变量分为哪两种大的数据类型?

基本数据类型和引用数据类型。基本数据类型直接将数据值保存,而引用数据类型存放的是数据的地址。

java 类变量引用 java引用类型的成员变量_面试


Example:

class People{
	public String name;
	public int id;
	public People(String name,int id){
		this.name = name;
		this.id = id;
	}
}
public class Test{
	public static void test(People p){
		p.name = "李四";
		p.id = 456;
	}
	public static void main(String[] args){
		People p1 = new People("张三",123);
		People p2 = p1;
		test(p2);
		System.out.println(p1.name+","p2.id);
	}
}

执行结果为:李四,456 以上代码中,p1,p2引用了同一个对象,p2的修改直接影响到p1的值,因为两个对象指向了同一个内存空间。

3、Java包含哪些基本数据类型及其包装类?

基本数据类型

包装类

byte

Byte

int

Integer

long

Long

short

Short

float

Float

double

Double

char

Character

boolean

Boolean

4、如何理解Java中的装箱与拆箱

Java基本数据类型的装箱和拆箱是为了实现基本数据类型和包装类的互相转换。java5.0版本以上提供了自动装箱和拆箱功能,也可以手动进行。

5、Java和引用和C++的指针有什么区别?

  1. 类型:引用的值为地址的数据元素,Java封装了地址,可以转换为字符串查看。C++的指针是一个装地址的变量,可以进行运算,如++,–等。
  2. 所占内存:引用声明时没有实体,不占用空间。C++指针声明后如果用到才会赋值,如果用不到就不会分配空间。
  3. 类型转换:引用的类型转换可能不成功,运行时抛出异常或编译不通过。C++指针只是一个内存地址,指向哪里,对程序来说还是一个地址,但可能值得地址不是程序想要的。
  4. 初始值:引用的初始值为java的关键字null;c++指针为int。
  5. 计算:引用是不可以计算的,c++指针为int, 可以计算,所有经常用指针代替数组下标。
  6. 控制:引用不可以计算,只能在自己的程序中,可以被控制;c++指针是内存地址,所有它可能指向了一个不属于自己程序使用的内存地址,对自己程序来说是不容易被控制的。
  7. 内存泄漏:Java引用不会产生内存泄漏。c++指针容易产生内存泄漏。
  8. 作为参数:Java方法参数只是传值,引用作为参数使用时,只给函数内引用的值copy,所以在函数内交换两个引用参数是没有意义的,因为引用参数的copy所引用的对象是和引用参数是同一个对象。c++指针作文参数给函数使用,实际上就是它所指的地址在被函数操作,所以函数内使用指针参数的操作都将直接作用到指针所指向的地址(变量、对象、函数等)。

总的来说,java中的引用和c++中的指针本质上都是通过一个叫做引用和或者指针的东西,找到要操作的目标,方便在程序中操作。

6、简述Java中的main()方法

Java应用程序需要一个入口函数,它就是main()方法。main()方法是一个公开的、静态的、无返回值、参数为一个字符串数组的方法,而且方法名必须为main。因为java的方法必须定义在类中,所以main()方法是属于某一个类的静态方法。

7、Java中equal和==的区别

例子:

public class Test{
	public static void main(String[] args){
		String a = "1234";
		String b = "1234";
		String c = new String("1234");
		System.out.println(a==b);
		System.out.println(a==c);
		System.out.println(a.equals(c));
	}
}

执行结果:true、false、true 第二个为false的原因是,a和c指向不同的对象。==在比较基本数据类型时,比较的是两者实际的值,在比较引用类型时,比较的是两者的地址,也就是是否指向同一个对象。通过new String()创建的字符串会单独生成一个对象。

equals()方法是java.lang.Object包下的方法,也就是所有java都有的方法,它的作用也是判断两者的对象是否相等。一般有两种情况:

  1. 类没有覆盖的equals()方法,则通过equals()比较该类的两个对象时,等价于“==”比较两个对象;
  2. 类覆盖了equals()方法,比较两者的内容是否相等。

8、Java提供了哪几种循环结构?各自的特点是什么?

while、do-while、for
for循环适合确定循环次数的循环结构;
while语句适合单条件的循环;
do-while语句更适合执行某段代码之后再循环的情况。

9、Java中三元运算符是什么?

a==b?c:d

如果ab为true,返回c;
如果a
b为false,返回d。

10、Java中的注释有哪些?

// : 行注释
/* …/块注释
/**…
/ 文档注释