第一周-绪论与Java基本语法-预习任务

第一周-绪论与Java基本语法-预习任务

1.使用Java能编写哪种类型的程序?

桌面应用程序,Web应用程序,移动/嵌入式应用开发等

2.编译好的Java程序为什么可以在各个操作系统都能运行?能运行的前提是每个操作系统都需要安装什么?

因为Java程序实质上是在JVM上运行的,之所以可以在不同的操作系统运行,是在不同的操作系统上安装了不同版本的JVM。

JVM

3.对比c版本的与Java版本HelloWorld代码,有何不同?

c语言版本:

#include<stdio.h>
    int main() {
        printf("Hello World!\n");
        return 0;
}

c语言直接在main函数里输入输出Hello World!语句格式化输出

java版本:

public class HelloWorld {
    public static void main(String[] args){
        System.out.println("Hello World!");
    }
}

java在一个名为HelloWorld公共类中,一个名为main的方法中进行代码编写,main方法使java程序执行入口方法,方法上的publc是修饰表示为公有的。println() 就是 java.io.PrintStream 类里的一个方法,它的作用是向控制台输出信息。

4.怎么比较两个字符串内容是否相同?可以直接用吗?为什么对基本数据类型可以直接使用?对引用数据类型不行?

  • 用equals方法比较的是字符串的内容是否相同

  • 不可以直接用==

  • 这里的""比较的是两个基本类型的值,""比较的是对象的内存地址,new了两个不同的对象所存放的地址是不一样的。

    基本数据类型和引用类型的区别主要在于基本数据类型是分配在栈上的,而引用类型是分配在堆上的

    String[] a={"latiny1","latiny2"};
    String[] b={"latiny1","latiny2"};
    
    if(a==b)
    {
    System.out.println("a==b");
    }
    else
    {
    System.out.println("a!=b");
    }
    
    程序输出a!=b
    

    原因:a和b的地址是不相同的,a==b比较的是两个变量的地址,数据a与b的地址不一样

    对于局部变量来说,不论是基本数据类型还是引用类型,他们都会先在栈中分配一块内存,对于基本类型来说,这块区域包含的是基本类型的内容;而对于引用类型来说,这块区域包含的是指向真正内容的指针,真正的内容被手动的分配在堆上。

    对于成员变量来说,不论是基本数据类型还是引用类型,他们都会存储在堆内存或者方法区中;成员变量可细分为静态成员变量和普通成员变量,静态成员变量类属于类,类可以直接访问,存储在方法区中;普通成员变量属于类对象,必须声明对象之后,通过对象才能访问,存储在堆中。

public class Main {
    static void changeStr(String x) {
        x = "xyz";
    }
    static void changeArr(String[] strs) {
        for (int i = 0; i < strs.length; i++) {
            strs[i] = strs[i]+""+i;
        }
    }
    public static void main(String[] args) {    
        String x = "abc";
        changeStr(x);
        System.out.println(x);
        changeArr(args);
        System.out.println(Arrays.toString(args));
    }
}

对于如上代码:
5.1 changeStr与changeArr的功能各是什么?

changeStr的功能为给x赋值为“xyz”

changeArr的功能为通过循环把字符串中的字符一个个拆分取出来,以字符和字符的位次保存到strs[i]中

5.2 main方法的x有没有被改变?为什么?

没有改变,参数是基本类型,函数不能改变参数的值。

1、基本类型作为参数传递时,是传递值的拷贝,无论你怎么改变这个拷贝,原值是不会改变的

2、对象作为参数传递时,是把对象在内存中的地址拷贝了一份传给了参数

5.3 main方法的args数组的内容有没有被改变?为什么?

参数不指定,agrs接收的是null

5.4 args数组中的值是从哪里来的?要怎么才能给他赋值。

  • 从命令提示符中传值
  • 直接在java代码中赋值

6.使用int[5] [] 定义一个二维数组,其第二维到底有多长?怎么使用foreach循环遍历一个二维数组?尝试编写代码遍历。

foreach的语句格式: 
for(元素类型t 元素变量x : 遍历对象obj){ 
   引用了x的java语句;
} 
public class Main {

    public static void main(String[] args) {

        int [][]arr=new int[][]{
                {1,2,3},
                {4,5,6},
                {7,8,9}
        };
        for(int x[] :arr) {
            for(int y:x){
                System.out.print(y+" ");
            }
            System.out.println(" ");
        }
    }

}

输出
1 2 3  
4 5 6  
7 8 9  
posted @ 2021-09-06 21:55  GGGa-Yi  阅读(48)  评论(0编辑  收藏  举报