美文网首页
2019-06-22 Java学习笔记之Java基础

2019-06-22 Java学习笔记之Java基础

作者: NoelleMu | 来源:发表于2019-06-22 20:30 被阅读0次

    最近在Web安全中的代码审计方面决定转行做Java Web了,因为自己实在是不喜欢PHP这门语言,不喜欢那种混乱的风格和到处出漏洞的感觉,也不想深入学习它,正好最近也听说国内的网站后台绝大部分除了PHP就是Java,再加上自己对Java又非常感兴趣,于是开始学习Java,从Java SE入手了。
    学了几天,只想说:Java真香!
    Java中与C、C++、JavaScript相同的部分就不在笔记中记录了,学习的主要还是Java与这些语言不同的部分。

    Java代码的组成

    Java源文件即.java文件,经过javac命令编译后变为.class字节码文件,打包后变为.jar包。

    一个Java文件如下(来自“Java300集”中的一个例子,稍微改动了一点):

    /**
     * 版本2 实现小球沿着任意角度飞行
     * @Author N0_NullPointerException
     */
    
    package com.N0.BallGame2;
    import java.awt.*;
    import javax.swing.*;
    
    public class BallGame2 extends /*extends表示继承某个类*/  JFrame {
        //导入小球和球桌的图片
        Image ball = Toolkit.getDefaultToolkit().getImage("images/ball.png");
        Image desk = Toolkit.getDefaultToolkit().getImage("images/desk.jpg");
    
        double x = 100;     //小球初始位置的横坐标
        double y = 100;     //小球初始位置的纵坐标
        double degree = 3.14 / 3;   //初始角度:60度
    
        //绘制窗口和小球
        public void paint(Graphics g) {
            g.drawImage(desk, 0, 0, null);
            g.drawImage(ball, (int)x, (int)y, null);
    
            //计算小球的位置
            x = x + 10 * Math.cos(degree);
            y = y + 10 * Math.sin(degree);
    
            //判断碰到上下边界
            if (y > 500 - 40 - 30 || y < 40 + 40) {
                degree = -degree;
            }
    
            //判断碰到左右边界
            if (x < 40 || x > 856 - 40 - 30) {
                degree = 3.14 - degree;
            }
        }
    
        //加载窗口
        private void launchFrame() {
            setSize(856, 500);
            setLocation(50, 50);
            setVisible(true);
    
            //重复绘制窗口,大约25次/秒
            while (true) {
                repaint();
                try {
                    Thread.sleep(40);   //40ms画一次
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    
        public static void main(String[] args) {
            System.out.println("running...");
            BallGame2 game = new BallGame2();
            game.launchFrame();
        }
    }
    
    

    package:表示包。Java中包的概念有点类似于文件夹和其它语言中的namespace,采用包是为了方便对源码的管理。包的命名一般是自己域名或者公司名等倒着写,即以com开头。在这个程序段里这条语句的作用是声明这个.java文件从属于com.N0.BallGame2包,package为包的关键字。这条语句必须是整个Java源文件中非注释性语句的第一句。

    import:导入一个包。可以通过import关键字导入相关的类。比如import java.awt.*;就表示导入java.awt包中所有的类。

    public class BallGame2:Java是面向对象的语言,一个Java程序是由若干个类组成的,在一个.java文件中只能有一个public的类,其名称与文件名相同,例如这个类所在的文件就应命名为BallGame2.java。类的命名规则是每一个单词的首字母大写。

    main方法:main()方法是程序的入口点,也称为“主方法”。String[] args是main方法的参数。

    注释:Java有三种注释,分别是文档注释、单行注释和多行注释。

    文档注释:以/**开头,以*/结束,其中包含与这个.java文件相关的信息和Javadoc的信息。

    多行注释:以/*开头,以*/结束,可以跨多行,也可以放在一行内做行内注释(比如第十行的行内注释)。多行注释不能嵌套使用。

    单行注释:以//开头到行尾结束,//符号后面的全部都是注释的内容。

    Java的基本数据类型

    整数类型

    Java与C的整数类型差别不大,但是多了以下几种类型:

    数据类型 占用内存空间 取值范围
    byte 8位 -127~128
    short 16位 -32767~32768
    long 64位 -264~264-1

    在声明long类型的整数时,需要在后面加上“L”,表示这是一个长整数。

    注意:写l或者L都可以,但建议写L,这样便于区分L与大写的i。

    浮点类型

    与C和C++相同,Java的浮点类型也有float型和double型,在默认情况下小数会被视为double型,如果声明float类型的小数,需要在小数后面加上F(大写或者小写都可以)来说明这是一个float类型的小数。

    字符类型

    与C和C++相同,Java使用char关键字声明单个字符,声明方法、用法和存储原理与C相同。

    布尔类型

    使用关键字boolean来定义布尔类型,和C++的bool类型变量一样,boolean类型只有true和false两个可能的取值。

    Java循环语句

    Java除foreach语句、带标签的break和continue语句之外的选择、循环语句几乎和C++完全相同,就不做记录了。

    以下部分来自《Java从入门到精通》

    foreach语句

    foreach语句是for语句的简化版本,它不能完全代替for语句,但是任何foreach语句都可以改写成for语句。

    foreach并不是一个关键字,而是一种特殊的for语句的称呼方法,通常用foreach语句来遍历数组。

    语法如下:

    for (元素变量x : 遍历对象obj) {
        引用了x的java语句;
    }
    

    如:

    public class Repetition {
        public static void main(String[] args) {
            int arr[] = { 7, 10, 1 };
            System.out.println("一维数组中的元素分别为:");
            for (int x : arr) {
                System.out.println(x);
            }
        }
    }
    

    带标签的break语句和continue语句

    break和continue语句提供了标签功能,类似于C和C++中的goto语句,语法如下:

    标签名: 循环体 {
        break 标签名;
    }
    

    例如:

    public class BreakOutNested {
        public static void main(String[] args) {
            Loop: for (int i = 0; i < 3; i++) {
                for (int j = 0; j < 6; j++) {
                    if (j == 4) {
                        break Loop;
                    }
                    System.out.println("i = " + i + " j = " + j);
                }
            }
        }
    }
    

    带标签的continue语句与带标签的break语句用法相同。

    相关文章

      网友评论

          本文标题:2019-06-22 Java学习笔记之Java基础

          本文链接:https://www.haomeiwen.com/subject/beovqctx.html