2019-08-05 Day7 Java历史与基础的学习

目的

今天开始学习Java语言的第一天,还算是比较轻松;开始便简单了解Java的创建历史和发展轨迹,而从之前对C语言的学习转到了Java语言的学习,需要稍微更改一下自己的思维方式以及要时刻记得“Java语句中任何都可以作为对象”这句话;并且今天学习掌握了如何使用Android Studio建立Java工程,也算是为以后的学习找好了最基本的工具;同时,理解了Java语言中输入、输出等这些语句的使用方法,辨别其与C语言的区别;最后更是使用Java语言重新写了约瑟夫环游戏的代码,加深对Java的理解

Java语言特性

1. 易学:

Java语⾔言的语法与C语言和 C++语言很接近,使得大多数程序员很容易易学习和使⽤用Java

2. 面向对象:

Java语言提供类、接 口和继承等

3. 健壮:

Java的强类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证,并且丢弃指针

4. 安全:

Java通常被用在网络环境中,为此,Java提供了了一个安全机制以防恶意代码的攻击。如:安全防范机制(类ClassLoader),如 分配不同的名字空间以防替代本地的同名类、字节代码检查。

Java的数据类型

char short int long double float bool
注意 定义float型的时候,需要在数据后面加上f,否则可能会被当做double

 float version = 9.0f;

而定义long型的时候,按照规定最好在数据后面加一个L

 long size = 1234L;

布尔类型boolean只有真假(true/false)与c语言(非0即真不同)

 boolean isExist = true;
 System.out.println(isExist);

Java的类

  1. 在同一个源文件里面可以创建多个类
  2. 所有类都会在结构里面暴露出来
  3. public 修饰的类 这个文件的名称必须和这个类名相同
public class Myclass{

}
  1. 一个源文件里面只有一个public修饰的类

java的主函数

public static void  main(String[] args){}
  1. 提供一个main方法作为入口点
  2. public 入口方法 需要外部调用
  3. static 静态方法优先于类 在类加载之前就提前被加载 在编译的时候先被加载
  4. void main方法不需要返回值 GC机制 自动释放

GC的基本原理
Java的内存管理实际上就是对象的管理,其中包括对象的分配和释放。
对于程序员来说,分配对象使用new关键字;释放对象时,只要将对象所有引用赋值为null,让程序不能够再访问到这个对象,我们称该对象为"不可达的".GC将负责回收所有"不可达"对象的内存空间。
对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址、大小以及使用情况。通常,GC采用有向图的方式记录和管理堆(heap)中的所有对象(详见 参考资料1 )。通过这种方式确定哪些对象是"可达的",哪些对象是"不可达的".当GC确定一些对象为"不可达"时,GC就有责任回收这些内存空间。但是,为了保证GC能够在不同平台实现的问题,Java规范对GC的很多行为都没有进行严格的规定。例如,对于采用什么类型的回收算法、什么时候进行回收等重要问题都没有明确的规定。因此,不同的JVM的实现者往往有不同的实现算法。这也给Java程序员的开发带来行多不确定性。本文研究了几个与GC工作相关的问题,努力减少这种不确定性给Java程序带来的负面影响。

Java的基本使用

定义数组

定义一个数组,一定要确定元素的个数

int[] scores = new int[5];
scores[0] = 1;
System.out.println(scores[0]);

字符串

String name = "Jack";
String[] names = new String[5];
names[0] = "merry";
System.out.println(names[0]);

输出

print默认不会自动换行,println默认自动换行;输出一句话的时候,不用再使用%d这些,而是直接使用变量

System.out.print("hello\n");
System.out.print("world\n");
//Android 9.0 size is 1234.
System.out.println("Android "+version+" size is "+size+".");

输入

1.创建一个Scanner扫描仪
终端输入 文件 字符串

Scanner sc = new Scanner(System.in);

2.开始接收一个整数

int num = sc.nextInt();
boolean b = sc.nextBoolean();
hasNext() 判断是否还有数据
while (sc.hasNext()){
int num = sc.nextInt();
System.out.println("输入的内容是:"+num);
}

或者

for (int i = 0;i<3;i++){
int num = sc.nextInt();
System.out.println("输入的内容是:"+num);

随机数产生

Random r = new Random();
int num =r.nextInt(100);
System.out.println(num);

约瑟夫环游戏的编写

package swu.lsb.day1;


import java.util.Scanner;

public class MyClass {
    public static void main (String[] args) {
       int num = 0;

        //创建一个Scanner对象 用于接收终端的输入
        Scanner scanner = new Scanner(System.in);

        //提示输入参加的人数
        System.out.print("请输入参与的人数:");
        num = scanner.nextInt();

        //定义一个数组保存所有的编号
        int[] temp = new int[num];
        //开始编号
        for (int i = 0;i < num;i++){
            temp[i] = i+1;
        }

        //提示输入死亡号码
        System.out.print("请输入死亡编号:");
        int killerNumber = scanner.nextInt();
        int killed = -1;
        int count = 0;
        int totalKilled = 0;

        //开始游戏
        for (int i = 0;i < num;i++){
            //判断i指向的那个人是否已经死亡
            if (temp[i] != killed){
                //这个人报数
                count++;

                //判断报的数是否是死亡号码
                if (count == killerNumber){
                    System.out.println(temp[i]);

                    //杀掉这个人
                    temp[i] = killed;

                    //杀人总数+1
                    totalKilled++;

                    //清零
                    count = 0;

                    //判断是不是还剩一个人
                    if (totalKilled == num-1) {
                        break;
                    }
                }
            }

            //判断是否是最后一个
            if (i == num-1){
                i = -1;
            }
        }

        //输出数组
        for (int i = 0;i < num;i++){
            System.out.print(temp[i]+" ");
        }
    }
}

心得体会

今天的Java学习算是开了一个好头,继续加油,慢慢来

你可能感兴趣的:(2019-08-05 Day7 Java历史与基础的学习)