Java学习-介绍

1.JAVA的介绍

1.1Java发展史
  • Java是由C++发展而来,秉持着简单的设计理念。

  • Java主要的应用领域:

  • Java SE:应用于桌面开发软件;

  • Java EE:用来开发服务端程序;又可以用来开发Android系统,大数据等等

  • Java的编译方式区别于其他语言,Java在编译过程中经过编译和运行两个步骤。

  • 编译:在程序运行前,现将代码编译成机器码。

  • 解释:在程序运行时,逐行将代码解释成机器码并运行。

  • Java的运行方式:先编译,后运行。其过程为:在程序运行前,先将代码编译成字节码,在程序运行时,逐行将代码解释为机器码并运行。

  • 为了更好地理解编译和解释的流程,以下列流程进行描述:

  • 编译的运行机制:
    源代码 → (编译) → 字节码 → (运行) → 计算机

  • 解释的运行机制:
    源代码 → (运行) → 计算机{ 字节码 → (解释)→ 机器码 }

  • JAVA的运行机制:
    源代码 → (编译) → 字节码 → (运行) → 计算机{ 字节码 → (解释)→ 机器码 }

  • Java运行机制的优点:比解释更快,比编译更省事。

1.2Java的开发工具
  • JDK:Java Development kit
  • JRE:Java Runtime Environment, JRE包含于JDK
  • Java Virtual Machine:Java虚拟机,包含所需的各种类库,工具等等
1.3Java开发
  • JDK下载:oracle.com(官网) ->JAVA->Java SE-> Downloads-> windows-x64.exe. 安装完成后,在环境变量中配置环境,如:Path: C:\Program Files\java\jdk\bin
    测试是否安装成功:

  • 首先创建Java的源程序,其次编写Java源代码,最后编译Java源程序。

  • 编译命令:javac,运行命令为:java。
    例如:首先创建一个First.java文件,利用 javac First.java进行编译得到First.class,利用java First运行。

  • Java的固定格式如下:

public class First {
       public static void main (String[] args) {
              System.out.println("Hello World!");
       }
}
1.4Java的集成开发环境IDE
  • Eclipse:由IBM公司开发的软件。利用java语言开发,可以编写java/C/C++,PHP,JavaScript等语言,且源代码时开发的,它具有体积少,内存小的优点。
  • IntelliJ IDEA:由JetBrains公司开发的软件,是目前最好的java开发工具。它具有漂亮的页面,强调试工具和智能编码的优点。
1.5变量
  • 变量是指代内存中的一小块空间。数据类型用于指导计算机为这块内存分配多大的空间。注意:

  • 没有声明的变量不能使用;

  • 未初始化的变量不能使用;

  • 存储的数据需要满足数据类型;

  • 变量的命名:

  • 标识符是报名,类名,方法名,变量的统称。变量不能命名为标识符。

  • 不可以为字母,数字,“-”,“$”组成。

  • 不能以数字开头

  • 不可以为java关键字。

  • 实例说明

/*
* 这是一个关于变量的示范
* 关于变量的声明,初始化,使用和命名的介绍
* */
public class VariableDemo {
    public static void main(String[] args) {
        //1.变量的声明
        int a;
        int b,c;

        //2.变量的初始化
        a=10;
        b=20;
        int d=30;
        int e=40, f=50;

        //3.变量的使用
        //System.out.println(n);
        //System.out.println(c);
        //a=3.14;
        System.out.println(a);
        System.out.println(b);

        //4.变量的命名
        //int a#;
        //int 2b;
        //int class;
        int score;
        int javaScore;
        int myJavaScore;
    }
}
1.6基本数据类型
  • 八大基本数据类型

  • 整数类型:byte(8位), short(16位), int(32位), long(64位);

  • 浮点数类型:float(32位), double(64位);

  • 字符类型:char(16位);

  • 布尔类型:bool;

  • 取值范围

  • byte(8位): -128~127

  • short(16位): 32768~32767;

  • int(32位):-2 ^ 32 ~ 2 ^ 32 - 1;

  • long(64位):-2 ^ 64 ~ 2 ^ 64 - 1;

  • 数据类型转化

  • 转化的前提:除了bool类型外,其余其中类型均为数字类型;

  • 转化的关键:与数据类型的取值范围有关系;

  • 转化的方式:自动类型转换,强制类型转换;

  • 实例:

/*
* 这是一个关于整数类型,浮点数类型,字符类型,布尔类型的示范
* */
public class DataTypeDemo {
    public static void main(String[] args) {
        //直接写出的数为直接数
        System.out.println(9);
        System.out.println(3.14);
        //1.int   直接写出的整数为int类型
        //赋值如果超过取值范围,编译将会报错
        //int i=3000000000;
        //运算如果超过取值范围,编译将会报错
        int i=2147483647;    //i在计算机中存储形式为0111....
        //System.out.println(i+1);    //i+1在计算机中存储的类型为1000....,其结果为-2147483648
        //2.byte, short, long
        //int类型的直接量可直接赋给long类型
        long l=2;
        //int类型的直接量不可超出其取值范围,long类型的直接量应该以l/L结尾
        //l=3000000000;
        l=3000000000L;
        //int类型的直接数可以直接赋给byte, short, long. 但注意不能超过其取值范围
        byte b=4;
        //b=128;
        //b=i;
        short s=2;
        //s=32768;
        //s=i;
        //3.double, float
        //直接写出的小数为double类型的直接量
        double d=0.4;
        //float类型的直接量应该以f/F结尾
        float f=0.2f;
        //浮点数不精确
        System.out.println(300000.02f);
        System.out.println(300000.03f);
        System.out.println(3.3f+0.1f);
        //4.char
        char c1='A';
        char c2=0b01000001; //65,ASCII编码表
        char c3='\u0041';   //Unicode, 16进制
        System.out.println(c1);
        System.out.println(c2);
        System.out.println(c3);
        //转义字符
        //char c4=''';
        char c4='\'';
        char c5='\t';
        char c6='\\';
        char c7='\n';
        System.out.print(c4);
        System.out.print(c5);
        System.out.print(c6);
        System.out.print(c7);
        //字符串
        String str="Hello World.";
        System.out.println(str);
        //5.boolean
        boolean b1=true;
        boolean b2=false;
        System.out.println(b1);
        System.out.println(b2);
        int age=25;
        System.out.println(age>18);
        System.out.println(age<18);
    }
}
1.7运算符
  • 运算符分类:算术运算符,关系运算符,逻辑运算符,赋值运算符,三元运算符,字符串的位运算符

  • 算术运算符:"+" “-” “*” “/” “%” “++” “- -”

  • 关系运算符:">" “<” “>=” “<=” “==” “!=”;返回结果为true或false

  • 逻辑运算符:"&&", “||”, “!”;

  • 赋值运算符:"=", “+=”, “-=”, “/=”, “*=”

  • 三目运算符:布尔表达式: 条件 ? 结果1:结果2
    例如:String title = age > 30 ? “小姐姐”:“小美眉”;

  • 位运算符:"&"," |", " ^(按位异或)", " ~(按位取反)" ,"<<(左移) " ,">>(右移) " ,
    ">>>(无符号右移 "

  • 实例

/*
* 这是一个关于算术运算符,关系运算符,逻辑运算符,
* 赋值运算符, 三元运算符, 字符串运算符, 位运算符的示范
* */
public class OperatorDemo {
    public static void main(String[] args) {
        //1.算术运算符
        System.out.println(5/2);
        System.out.println(5%2);

        //++i,i++
        //++i, i先自增, 后运算
        int a = 100;
        System.out.println(++a + 100);
        System.out.println(a);

        //i++, i先运算, 后自增
        int b=100;
        System.out.println(b++ + 100);
        System.out.println(b);

        //2.关系运算符
        int score=70;
        System.out.println(score >= 60);
        System.out.println(score == 100);
        System.out.println(score != 100);

        //3.逻辑运算符
        int age=32;
        double salary=40000.00;

        boolean result=age < 30 && salary > 20000.00;
        System.out.println(result);

        result = age <30 || salary >20000.00;
        System.out.println(result);

        result =! (age<30 ||salary >20000.00);    //可以理解为满足该条件就不行,或者不满足这个条件就行
        System.out.println(result);

        // && , || , 有时候存在短路现象, 原因是左边已经满足条件, 导致右边未被执行
        System.out.println(salary > 50000.00 && ++age > 30);
        System.out.println(age);

        System.out.println(salary > 20000.00 || ++age > 30);
        System.out.println(age);

        // 4.赋值运算符   y = x = 1; 等价于 x = 1 ; y = x;
        salary = salary + 10000.00;
        System.out.println(salary);
        double topSalary = salary = salary + 10000.00;
        System.out.println(salary);
        System.out.println(topSalary);

        // 5. 三元运算符
        String title = age > 30 ? "小姐姐" : "小美眉";
        System.out.println(title);

        salary = salary > 50000.00 ? 50000.00 : salary;
        System.out.println(salary);

        // 6. 字符串运算符
        String s1 = "她的年龄:" + age;
        System.out.println(s1);
        String s2 = "她的工资:" + salary;
        System.out.println(s2);

        //注意
        System.out.println("" + 100 + 200);   //return 100200
        System.out.println(100 + 200 + "");   //return 300

        // 7.位运算
        //不同进制的整数表示方法
        System.out.println(0b1010);
        System.out.println(012);
        System.out.println(0xA);

        //如何将十进制转化为二进制
        System.out.println(Integer.toBinaryString(5));
        System.out.println(Integer.toBinaryString(-5));
        System.out.println(Integer.toBinaryString(9));

        //位移运算
        System.out.println(5 << 2);
        System.out.println(-5 << 2);
        System.out.println(5 >> 2);
        System.out.println(-5 >> 2);
        System.out.println(-5 >>> 2);
    }
}

1.8 输入
  • 引入Scanner对象:import java.util.Scanner;

  • 创建对象:Scanner scan = new Scanner(System.in);

  • 接收数据:scan.nextInt(), scan.nextDouble(), scan.nextLint()

  • 停止输入:scan.close();

  • 实例

import java.util.Scanner;

public class ScannerDemo {
    public static void main(String[] args) {
        //创建Scanner对象
        Scanner scan = new Scanner(System.in);

        //开始输入
        System.out.println("请输入您的名字!");
        String name = scan.nextLine();

        System.out.println("请输入您的年龄!");
        int age = scan.nextInt();

        System.out.println("请输入您的月薪!");
        double salary = scan.nextDouble();

        //关闭scan
        scan.close();

        //处理输入的数据
        System.out.println("姓名:" + name);
        System.out.println("年龄:" + age);
        System.out.println("月薪:" + salary);

        //
    }
}
1.9 案例
  • 需求一:判断某一年是否为闰年。

  • 关键:

  • 能被4整除,但不能被100整除;

  • 能被400整除;

  • 代码:

import java.util.Scanner;

public class LeapYearDemo {
    public static void main(String[] args) {
        //请输入年份
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入年份:");
        int year = scan.nextInt();
        scan.close();

        //判断是否为闰年
        boolean isLeapYear =(year % 4 == 0 && year % 100 != 0) || (year %400 == 0);
        String result = isLeapYear ? "是闰年" : "不是闰年";
        System.out.println(result);
    }
}
1.10流程控制描述
  • 流程控制结构
  • 顺序结构:各项操作是按照出现的先后顺序;
  • 分支结构:程序步骤出现分支,需要根据某一个特定的条件选择其中一个分支执行;
  • 循环结构:程序反复执行某些或某个操作,直至条件成立时终止循环;
  • 分支结构包括:if分支和switch分支
  • 循环结构包括:while循环,for循环,do … while循环;
1.11 if 与switch分支
  • if语句:功能强大,切语法简介,灵活;

  • switch语句:功能单一,结构固定,但运行效率更高;

  • 实例:

import java.util.Scanner;
/*
* 这是if的第一种形式
* */
public class IfDemo {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入您的年龄!");
        int age = scan.nextInt();
        scan.close();

        if (age > 18) {
            System.out.println("已成年,准入。");
        }
    }
}
/*
* 这是if的第二种形式
* */

import java.util.Scanner;

public class IfDemo2 {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("输入一个整数!");
        int n = scan.nextInt();
        scan.close();

        if (n % 2 == 0) {
            System.out.println("是偶数");
        } else {
            System.out.println("是奇数");
        }
    }

}


import java.util.Scanner;

/*
* 这是if的第三种形式
* */

public class IfDemo3 {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入Java课程的分数!");
        int score = scan.nextInt();
        scan.close();


        if (score >= 90) {
            System.out.println("Java课程成绩为A");
        } else if (score >= 80) {
            System.out.println("Java课程成绩为B");
        } else if (score >= 70) {
            System.out.println("Java课程成绩为C");
        } else if (score >= 60) {
            System.out.println("Java课程成绩为D");
        } else {
            System.out.println("Java课程成绩为E");
        }

        //当条件之间具有包含关系时,应当将被包含的条件写在前面,如以下错误案例
        if (score >= 60) {
            System.out.println("Java课程成绩为D");
        } else if (score >= 70) {
            System.out.println("Java课程成绩为C");
        } else if (score >= 80) {
            System.out.println("Java课程成绩为B");
        } else if (score >= 90) {
            System.out.println("Java课程成绩为A");
        } else {
            System.out.println("Java课程成绩为E");
        }
    }

}

import java.util.Scanner;

/*
 * 这是if的第四种形式
 * */
public class IfDemo4 {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入Java课程的分数!");
        int score = scan.nextInt();
        scan.close();

        //当某一分支只含有一行代码时,可以省略{}, 但是不建议这样做。
        if (score >= 90) {
            System.out.println("Java课程成绩为A");
        } else if (score >= 80) {
            System.out.println("Java课程成绩为B");
        } else if (score >= 70) {
            System.out.println("Java课程成绩为C");
        } else if (score >= 60) {
            System.out.println("Java课程成绩为D");
        } else {
            System.out.println("Java课程成绩为E");
        }

    }

}
import java.util.Scanner;

public class SwitchDemo2 {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入当前月份!");
        int month = scan.nextInt();
        scan.close();

        switch (month) {
            case 1:
            case 2:
            case 3:
                System.out.println("第一季度");
                break;
            case 4:
            case 5:
            case 6:
                System.out.println("第二季度");
                break;
            case 7:
            case 8:
            case 9:
                System.out.println("第三季度");
                break;
            case 10:
            case 11:
            case 12:
                System.out.println("第四季度");
                break;
            default:
                System.out.println("错误的数字!");
        }
    }

}
1.12循环结构
  • 循环三要素:
  • 循环条件:逻辑表达式,决定是否执行循环体;
  • 循环体:当循环条件满足时,则代码块被重复执行;
  • 迭代语句:改变循环条件的变量,使循环条件趋近于假,并最终为假;
  • 如何选择循环:
  • for循环结构稳定,不容易遗漏任何循环要素,适合处理循环次数固定的场景
  • while:先判断循环条件,再执行循环体,适合处理“当…”的循环业务场景。
  • do while:先执行循环体,再判断循环条件,适合处理“直到…”的场景。
  • 实例:
import java.util.Scanner;
/*
* 关于do, while 的循环
* */
public class LoopDemo2 {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入一个整数!");
        int num = scan.nextInt();
        scan.close();

        //记录整数的位数
        int len =0;

        //循环除尽为止
        do {
            len++;
            num /= 10;
        } while (num != 0);

        System.out.println("整数位数为" + len);
    }


}

/*
* for的循环示例, for的另外三种方式
* */
public class LoopDemo4 {

    public static void main(String[] args) {
        int i = 0;
        for (; i < 10; i++) {
            System.out.print(i + "\t");
        }
        System.out.println("\n");

        for (int j = 0; j < 10; j++) {
            System.out.print(j + "\t");
        }
        System.out.println("\n");

        for (int m = 0, n = 9; m < 10 && n >-1; m++, n--) {
            System.out.println("m =" + m +", n =" + n);
        }
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值