Java第二课

这节课回顾了Java的发展历史、JDK与JVM的关系,介绍了Eclipse的快捷键操作,讲解了Java中的关键字、标识符、常量、变量、数据类型以及ASCII码表。课堂练习包括变量定义、数据类型求和、负数的二进制表示和控制台输入操作。还涉及了运算符的使用,如异或和位移,并简要介绍了switch-case结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 Java第二课

目录

1.1 回顾:

1、 Java的发展历史,java的开发平台:JavaSE(标准版)、 JavaEE(企业版)、JavaME(微型版)
2、 Java语言的特点:面向对象 跨平台(字节码文件->在不同的平台上有不同的虚拟机JVM) 健壮性(强类型,没有指针,不用强制回收对象) 分布式 多线程 动态性等;
3、 JDK JRE JVM: 三者 关系,JDK的安装和配置环境变量; path:指向jdk安装目录下的bin目录; JAVA_HOME: 指向jdk的安装目录; classpath: 特别要注意, 要有一个 .; jdk下的lib目录 和 tools.jar ;javac 负责编译java源代码的; java 解释执行java的字节码文件.
4、 IDE工具MyEclipse/ Eclipse的安装配置(JRE)
5、 Java基本语法:
package day01;
public class Introduce{
public static void main(String[] args){
//\n 才是转义字符 表示换行 /n只是两个简单的字符 / n
//ln line 换行 printly() ?
System.out.println(“我叫某某某\n毕业于麻绳理工/n爱好是玩”);
}
}
6、 Java代码的执行过程: .java 编译 字节码文件.class java(JVM) 执行 ->结果

1.2 课后作业讲解:

打印输出个人信息:
输出结果:

public class Resume {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println("姓名:张三\n性别:男\n电话:123456");
    }

}

1.3 在Eclipse中,有一些快捷键

输入法为英文状态(美式键盘)
代码快速提示: alt+/ main/sysout
类重命名 : F2
单行的注释: Ctrl +/ 再按一次ctrl+/ 取消原来的注释
块注释: ctrl+shift+/
取消块注释: ctrl+shift+\
保存: 经常保存 ctrl+s
代码对齐: ctrl+shift + f

1.4 Eclipse操作,导入工程:

基本操作: 右键->import->General->Existing Project into workspace->浏览->找到工程的文件夹->点击确定….

1.5 Java中的关键字:

保留字: 例如 package ,class ,int void 等,这些符号是java中已经定义好,我们自己定义变量的时候,不能使用.

1.6 Java中的标识符,常量,变量:

小明有5块钱,小明和小红的钱加在一起共有12块,问,小红有几块钱?
解: 假设小红有x元钱:
5+x = 12;
标识符可以用来定义类,方法,变量等等,那么,这个标识符有哪些常见的规则:
1. 标识符应该由字母 数字 下划线和$符号组成.
2. 不能以数字开头
3. 要有一定含义,尽量遵循骆驼命名的方法,第一个单词小写,后面每个单词首字母大写 studentName/age.
4. 在同一个作用域中,不能重复。

1.7 变量和常量:

常量: 在程序运行期,这个值应该一直保持不变; 现实生活中的性别,常量不变的; 数学中: π:3.14.

//定义一个常量 表示一个人的性别  男/女
        final char sex = '男';

        //The final local variable sex cannot be assigned.
        //It must be blank and not using a compound assignment
        //常量一旦赋值 将不能再修改
        sex  = '女';

变量:通俗来说,就是和常量对应,程序运行期内是可以发生改变的,本质来讲,变量应该是在内存中一个存储区域; 这个存储区域是有大小的,大小是由数据类型来确定的.

package test;

public class Test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        // 数据类型 变量名 = 值 ;
        int age = 12; // int 占四个字节
        int a = 1;
        // 同时声明多个变量,并赋值
        int f = 1, g = 2, h = 3;
        // 声明变量 而不直接赋值
        int b = 3;
        // 同时声明多个变量
        int c, d, e;
        // 输出变量的值
        System.out.println(age);
        // 如果用+ 来连接 数字格式的变量
        System.out.println(f + g + h);
        System.out.println("f: " + f + ",g: " + g + ",h :" + h);
        // 那如果我们输出b c d e的值呢?
        // The local variable b may not have been initialized 变量b没有初始化,就是没有赋值
        System.out.println(b);
        // 可以修改age的值
        age = 13;
        System.out.println("age: " + age);
    }
}

输出
12
6
f: 1,g: 2,h :3
3
age: 13
如何定义变量和常量:
数据类型 变量名 = 值; //将右侧的值 赋值给左侧的那个变量

1.8 常见的数据类型:

int :整数 4字节长度
float :单精度浮点型 4字节
double :双精度浮点型 8个字节
char : 字符 2字节

这里写图片描述

1.9 ASCII码表:

ASCII码表

package test;

public class Test {

    public static void main(String[] args) {
        int n = 1;
        // 红色波浪线上点击 F2
        // Type mismatch: cannot convert from double to float
        // 类型 不匹配 ,不能 从double 转换为 float 进行类型转换
        // 在java中,默认写的小数字,都是double 类型 1.23是一个double
        // 方法1 在1.23后加一个f
        float f = 1.23f;
        // 方法2 强制转换(显式) (float)
        // 可能会丢失精度
        float f1 = (float) 1.2312121212121;
        double d1 = 12.34;
        // 这里也包含一个类型的转换,自动转换(隐式),其实double中是包含了int类型的;
        double d2 = 1; // 不会出错,java语言强类型,变量是什么类型 (double),那么=赋值的那个值就是什么类型(1 int?)
    }
}

1.10 课堂练习:

1) 实现int+char+float+double类型的求和操作;
变量定义: 数据类型 变量名 = 值;
分析: 多个数据类型累加,最终的结果是什么类型? Double

package test;

public class Test {

    public static void main(String[] args) {
        // 定义四种类型的变量并赋值
        int a = 1;
        float f = 1.23f;
        char ch = 'A';
        double d = 12.3434343;
        double sum = a + f + ch + d;
        // 输出
        System.out.println("sum :" + sum);//sum :79.57343765693359
        // 输出结果要保留几位小数(很多种方法)
        System.out.printf("%.2f", sum);//79.57

    }
}

2) 实现int +float+double类型的求和操作,但是要求int ,float,double是从控制台输入进来的;

package test;

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        // Scanner cannot be resolved to a type
        // 无法识别Scanner这个类
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个整数");
        // 等待用户从控制台输入一个整数
        int i = sc.nextInt();
        System.out.println("请输入一个单精度浮点型");
        // 等待用户从控制台输入一个整数
        float f = sc.nextFloat();
        System.out.println("请输入一个双精度浮点型");
        // 等待用户从控制台输入一个整数
        double d = sc.nextDouble();
        double sum = i + f + d;
        System.out.printf("累加结果: sum %.2f", sum);
        // 用完了记得要关闭close
        sc.close();
    }
}

请输入一个整数
1
请输入一个单精度浮点型
1.1
请输入一个双精度浮点型
1.11
累加结果: sum 3.21

package test;

public class Test {
    public static void main(String[] args) {
        //short类型
        short x = -32768;
        //--x 表示的是在原来那个值得基础上,-1
        //x = 10;  --x;=>9
        //-32768 -1 =>--32769
        //因为我们short类型数据范围: -32768 - 32767
        System.out.println(--x);
        short y = 32767;
        System.out.println(++y);
        System.out.println("********************");
        //尽量听懂
        byte b = (byte)-129;
        //-129 明显超出了byte类型的范围
        //认为  -129 默认是int类型 4字节 /byte类型只有一个字节
        //byte b =-129;
        //byte b = 11111111 11111111 11111111 01111111;
        byte b1 =(byte)-129; //01111111
        System.out.println("b :"+b); //? 127
    }
}

32767
-32768
b :127
分析:
正数不考虑
二进制
原码->(除了符号位 ,取反)反码->(负 +1 )补码。
Java中是以补码来表示的;
Byte: 1字节 8位
Int(-129): 4个字节 32位
需要-129转换为二进制,然后取反,再补。 再丢高位,留8位;
129:转换为二进制(如果不会转换) 除以2取余数
00000000 00000000 00000000 10000001
负数: 符号位(1表示的是负号)
10000000 00000000 00000000 10000001
取反(符号位不变,其他相反)
11111111 11111111 11111111 01111110
再补(+1)
11111111 11111111 11111111 01111111
丢(只保留后面8位,因为类型是byte类型了)
01111111

1.12 控制台输入:

控制台的输入:
Scanner

package test;

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        // alt + /
        System.out.println("请输入一个数字");
        Scanner sc = new Scanner(System.in);
        int i = sc.nextInt();
        // 对i进行一些操作
        System.out.println(i % 2 == 0 ? "偶数" : "奇数");
    }
}

请输入一个数字
1
奇数

1.13 常见的运算符:

赋值运算符: = int a =1;
算术运算符: + - * / %
比较(关系) : == != > < >= <= 返回值是一个boolean类型的 true /false ,用来判断

1.14 简单的比较问题:

package test;

public class Test {
    public static void main(String[] args) {
        System.out.println("比较的两个整数");
        int a = 1, b = 1;
        System.out.println("a==b: " + (a == b)); // true
        System.out.println("a!=b: " + (a != b)); // false
        System.out.println("a>=b: " + (a == b));// true
        System.out.println("a<=b: " + (a == b)); // true
        System.out.println("比较的两个小数");
        // 观察以下代码,得到的结果是 true,因为数字值 1.0,其实本质上java代码处理的时候当成整数的
        // 二迚制
        double d = 1.0d;
        float f = 1.0f;
        System.out.println("d == f: " + (d == f));// true
        // 因为赋的值为小数,1.05,因为数据类型不一样
        double d1 = 1.05d;
        float f1 = 1.05f;
        System.out.println("d1 == f1: " + (d1 == f1));// false
        // 得到一个结论,如果是小数格式的数据,进行比较的时候,不能用==去比较 ,但是可以用- 例如
        System.out.println(d1 - f1 > 0); // 此时如果值 true,认为d1>f1

    }
}

1.15 课堂练习:

从控制台输入两个数字,将这个两个数字交换后输出(要求不能定义第三个变量);

package test;

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        // 0 创建Scanner对象
        Scanner scanner = new Scanner(System.in);
        // 1 获取用户从控制台输入的值
        System.out.println("请输入整数1");
        int n1 = scanner.nextInt();// 接收一个整数进来
        System.out.println("请输入整数2");
        int n2 = scanner.nextInt();// 接收一个整数进来
        System.out.println("交换之前: n1: " + n1 + ", n2: " + n2);
        // 2 交换
        int t = n1;
        n1 = n2;
        n2 = t;
        // 3交换完成后的输出
        System.out.println("交换完成: n1: " + n1 + ", n2: " + n2);
        // 4关闭scanner
        scanner.close();
    }
}

不定义第三个变量的核心代码:

// 将n1+n2赋值给n1
        n1 = n1 + n2; // 1 2
        // 经过上面的代码之后 n1的值变成两个数字的和 ;但是n2还是n2 n1=>3 n2=2
        n2 = n1 - n2; // n1=>3 n2=2 3-2 =1 经过这个代码的执行 n2=1 =>此时n1 =3
        n1 = n1 - n2; // 执行代码 n1 =>3 n2=>1 n1=2

异或的运算符实现:

// 将n1^n2赋值给n1
        n1 = n1 ^ n2; // 1 2
        n2 = n1 ^ n2; //
        n1 = n1 ^ n2; //

1.16 运算符: ++ – 在前和在后的区别:

package test;

public class Test {
    public static void main(String[] args) {
        /*
         * int i=1; i++; System.out.println("i :"+i);//2 ++i;
         * System.out.println("i: "+i);//3
         */
        int i = 1;
        // i++ 先引用i的值,然后再做自+
        System.out.println("i :" + (i++));// 1
        // ++i 先+ 再引用i的值
        System.out.println("i: " + (++i));// 3
    }
}

i :1
i: 3

1.17 面试题:

如何用比较快速的方法得到2的4次方?
2<<3
10 ->10000

package test;

public class Test {
    public static void main(String[] args) {
        System.out.println(2<<3);//16
    }
}

16

1.18 Swtich-case结构:

中的变量类型,支持byte char short int 如果是jdk1.7(编译) 还可以支持String类型

这里写图片描述

1.19 总结

1、 变量,声明,赋值,定义,命名规则等.
2、 数据类型(8个基本类型 byte .short.int.long.float.double.char.boolean)
3、 运算符(= ==)
4、 控制台的输入(Scanner)

1.20 作业:

引用块内容
预习作业: 引用类型,其他的运算符.
代码作业: 给一个5位数(12345),将各个位数的数字取出来,求和输出: 1+2+3+4+5的结果 15
提示:需要用到 %

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值