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学习算是开了一个好头,继续加油,慢慢来

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容

  • 《深入理解Java虚拟机》笔记_第一遍 先取看完这本书(JVM)后必须掌握的部分。 第一部分 走近 Java 从传...
    xiaogmail阅读 5,059评论 1 34
  • 这篇文章是我之前翻阅了不少的书籍以及从网络上收集的一些资料的整理,因此不免有一些不准确的地方,同时不同JDK版本的...
    高广超阅读 15,528评论 3 83
  • JVM架构 当一个程序启动之前,它的class会被类装载器装入方法区(Permanent区),执行引擎读取方法区的...
    cocohaifang阅读 1,644评论 0 7
  • JAVA相关基础知识 1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以...
    yangkg阅读 658评论 0 1
  • 一 、java虚拟机底层结构详解 我们知道,一个JVM实例的行为不光是它自己的事,还涉及到它的子系统、存储区域、...
    葡萄喃喃呓语阅读 1,472评论 0 4