Java基础1-注释、变量的定义、数据类型、运算符、输入输出

Java基础

Java语言跨平台的原理:

- 操作系统本身其实是不认识Java语言的。 但是针对于不同的操作系统,Java提供了不同的虚拟机(jvm)虚拟机会把Java语言翻译成操作系统能看得懂的语言。

注释:
//单行注释


/*多行注释
  多行注释
*/

/**
*文档注释
*
**/

关键字:

被Java赋予了特定含义的英文单词。当我们在代码中写了关键字之后,程序在运行的时候,就知道要做什么事情了。关键字很多,不用刻意去记。

Image.png

关键字class:表示定义一个类,创建一个类。类:Java项目最基本的组成单元,一个完整的Java项目有可能会有成千上万个类来组成的。class后面跟随的就是这个类的名字,简称:类名。在类名后面会有一对大括号,表示这个类的内容。

eg:

public class HelloWorld{ }

解释:class表示定义类。 类名:HelloWorld, HelloWorld后面的大括号表示这个类的范围。

变量

变量就在程序中临时存储数据的容器。

变量的定义格式数据类型 变量名 = 数据值;
格式详解 数据类型:限定了变量当中能存储什么类型的数据。

如果要存10,那么数据类型就需要写整数类型。如果要存10.0,那么数据类型就需要写小数类型。 变量名:其实就是这个容器的名字。 当以后想要使用变量里面的数据时,直接使用变量名就可以了。

数据值:真正存储在容器中的数据。

分号:表示语句的结束,就跟以前写作文时候的句号是一样的。

常用的数据类型 整数:int 小数:(浮点数)double

八大基本数据类型

Image.png

如果要定义 一个整数类型的变量,不知道选择哪种数据类型了,默认使用int。

如果要定义 一个小数类型的变量,不知道选择哪种数据类型了,默认使用double。

如果要定义一个long类型的变量,那么在数据值的后面需要加上L后缀。(大小写都可以,建议大写。)

如果要定义一个float类型的变量,那么在数据值的后面需要加上F后缀。(大小写都可以)

(不要用double进行精确的小数计算,会出现丢失精度的问题,以后在有支付功能的项目里一定要注意)

类型转换

高精度向低精度类型转换时会导致精度缺失
0b   代表2进制的数
0    代表8进制的数
0x   代表16进制的数
 //java默认的浮点型是double,当用float定义变量时,值后面要跟f
        float a = 3.14f;
        boolean b = true;
        boolean c = false;1
//浮点型转int类型
        float o = 8;
        double l = (double)9;
        System.out.println(o);
        System.out.println(l);
//int 转byte
        int m = 129;
        //因为byte类型的大小范围为 -127~127,故类型转换时 129会被转 -127
        byte n = (byte)m;
//java 整型变量默认为int类型
        byte d = 1;
        byte e = 2;
        //所以定义字节型变量相加时,需要用强制类型转换
 //python 中bool类型转换0会转换为false,1会转换成true,java不可以转
        boolean bool = true;
        //boolean bool2 = (boolean)1;int 转boolean会报错
        //int i = (int)false; boolean 转int也会报错

**instanceof:**检查左边的对象是否为右边类的实例,返回 boolean。

&:单&时左边无论true或false右边都运算

&&:如果左边为true,右边参与运算,左边为false右边不参与运算

|:左边无论真假右边都参与运算

||:左边为真右边不参与运算

位运算:将数据转换成2进制运算

System.out.println(6&3)
    输出>>>>2
正数的原码、反码、补码均是它本身
6 的原码(补码、反码)符号位0   110
3 的原码(补码、反码)符号位0   011
System.out.println(6|3)
    输出>>>>7                                                               
 // 位运算 将数据转换成一个二进制码进行计算

        // & 与运算
        System.out.println(6 & 3);
        /*
             6和3的补码
           原码(补码、反码):
                0 0000000 00000000 00000000 00000110
                0 0000000 00000000 00000000 00000011
           &运算对应位置上都为1那么结果为1 否则为 0
                0 0000000 00000000 00000000 00000010
           十进制结果为: 2
         */

        // | 或运算
        System.out.println(6 | 3);
        /*
             6和3的补码
           原码(补码、反码):
                0 0000000 00000000 00000000 00000110
                0 0000000 00000000 00000000 00000011
           |运算对应位置上出现为1的结果就是1
                0 0000000 00000000 00000000 00000111
           十进制结果为: 7
         */

        // ^ 异或运算
        System.out.println(6 ^ 3);
        /*
             6和3的补码
           原码(补码、反码):
                0 0000000 00000000 00000000 00000110
                0 0000000 00000000 00000000 00000011
           ^运算对应位置上不一样的为1 一样返回 0
                0 0000000 00000000 00000000 00000101
           十进制结果为: 5
         */

        // ~ 取反运算
        System.out.println(~6);
        /*
             6的补码
           原码(补码、反码):
                0 0000000 00000000 00000000 00000110
           ~ 将原先为0的转成1 1转成0
           补码    1 1111111 11111111 11111111 11111001
           反码    1 1111111 11111111 11111111 11111000
           原码    1 0000000 00000000 00000000 00000111
           十进制结果为: -7
           注意:~中 对于符号位也会进行计算
         */

        // <<	左移 左移N位 就相当于 是对于当前值 * 2^N幂
        System.out.println(3 << 2); // 12
        /*
        3的补码:
            0 0000000 00000000 00000000 00000011
       (0 0)0 00000 00000000 00000000 0000001100
        十进制结果为:12
         */

        // <<	右移 右移N位 就相当于 是对于当前值 / 2^N幂
        System.out.println(-5 >> 1);
         /*
        3的补码:
            0 0000000 00000000 00000000 00000011
            00 0000000 00000000 00000000 0000001(1)
        十进制结果为:1
        */

        // >>> 无符号右移
        System.out.println(-5 >>> 1);
        /*
            3的补码:
                0 0000000 00000000 00000000 00000011
                00 0000000 00000000 00000000 0000001(1)
            十进制结果为:1
        */


        // 请用最有效率的方式写出计算2乘以8的结果
        System.out.println(2 << 3);   
运算符

算术运算符:+、 -、 * 、/ 、%,跟数学中的加减乘除一模一样

/ 和 % 的区别:他们两个都是做除法运算,/取结果的商。% 取结果的余数。

整数操作只能得到整数,如果想要得到小数,必须有浮点数参与运算。

算术运算符的高级用法:是以+为例进行的讲解,其余减法,乘法,除法的运算规则也是一样的。

特例:字符串只有+操作,没有其他操作。

System.out.println('a');
        //字符加上数字,Java编译器会把字符转译为ASC码进行相加
         System.out.println('a'+1);//>>>98
         //java中" "代表字符串,' '代表字符
        System.out.println("-------");
        System.out.println("a"+1);//>>>>a1
        System.out.println("------------");
        System.out.println("hello"+'a'+1);//>>>helloa1
        System.out.println("--------------");
        System.out.println("5+5+"+5+5);//>>>5+5+55
        System.out.println("------");
        System.out.println(5+5+"=5+5");//>>>10=5+5
//运算符
        int a = 13;
        int b = 3;
        //对于两个整数用/计算,最后结果会进行取整运算
        System.out.println(a/b);//>>>>>4
        //对于两个不同数据类型的值进行计算,计算结果会自动向类型较大的转换
        double c = 13.0;
        System.out.println(a/c);//>>>1.0
        System.out.println("---------------");
        //对于 a++运算和a--,会先赋值再计算,例如:
        int d = b++;
        System.out.println(d);//>>>>3
        System.out.println(b);//>>>>4
        //对于 ++a和--a运算,会先进行加运算,之后再赋值,例如:
        System.out.println("----------");
        int e = 4;
        int f = ++e;
        System.out.println(f);//>>>>5
        System.out.println(e);//>>>>5

        System.out.println("-----------");
        //对于两个字符串相加,则会进行字符串的相加,例如:
        System.out.println("asdfgh"+"poipiou");//>>>>asdfghpoipiou

赋值运算符:=、+=、-=、*=、/=、%=

//赋值运算符
        //   =是赋值运算符,把等号右边的值赋值给左边,例如:
        int a = 1;
        //  a+=b,逻辑上与a=a+b相同,例如:
        int b = 2;
         b +=a;
        System.out.println(b);//>>>3
        //若用byte和short对变量进行赋值且进行计算
        short c = 3;
        byte d = 4;
        int e = (int)c+d;//对于short和byte 类型相加时,类型会自动转化为默认的int类型
        //直接定义变量接收一个short和byte类型的变量,需要考虑类型的转换
        c+=d;//若使用+=之类的运算符则不用考虑类型之间的转换
        System.out.println(c);
        System.out.println("-----------");

        //对于字符串值进行比较时,不能用==进行比较,因为字符串用==进行比较时比较的是两个字符串的地址是否相同
        //字符串进行比较时要用equals()方法进行比较,例如
        String str1 = "ww";
        String str2 = "w"+"w";
        System.out.println(str1==str2);//>>>>true
        String str3 = "w";
        String str4 ="w";
        String str5 = str3+str4;
        System.out.println(str1==str5);//>>>false
        System.out.println(str1.equals(str5));//>>>>true
        System.out.println("-------------");
        //可以使用instanceof方法判断左边的对象是否是右边类的实例,例如
        System.out.println(str1 instanceof String);//>>>>true

逻辑运算符:

& 与 &&.对于& 前面的结果不论false或true ,&后面的都需要进行计算。对于&&,&&前面的结果只有为true,后面的才会进行运算,若&&前面的结果为false,则后面的不参与计算.

| 与 ||,对于|,不论前面的结果为true或false后面的都需要进行计算,对于||,只有||前面的结果为fals时,||后面的结果才会进行计算,当||前面的值为true时,||后面的则不参与计算.

三目运算符:

//三目运算符: 
(关系表达式)?关系表达式返回true时的结果:关系表达式为false时返回的结果
        //三目运算符结果为true或false执行的代码必须要要有返回值,否则会出现报错
        int var=(3>4)?3:4;
        System.out.println(var);//>>>4
        //若返回值结果不同,且需要变量去接收返回的值时,需要定义一个类型较大的变量去接收
        short var2 = 9;
        int var3 = 8;
        //这时需要定义一个int类型的变量去接收三目运算的返回结果值
        int res1 =(var2>var3)?var2:var3;
        System.out.println("-----");

        //用三目运算符获取两个数中的最大值
        Scanner scanner = new Scanner(System.in);
        int a =  scanner.nextInt();
        System.out.println("请输入第一个数:");
        int b = scanner.nextInt();
        System.out.println("两个数中的最大数为:"+((a>b)?a:b));
        System.out.println("--------------");


        //用三目运算符,计算三个数中的最大值
       int i1 = scanner.nextInt();
       int i2 = scanner.nextInt();
       int i3 = scanner.nextInt();
        System.out.println("三个数中的最大数为:"+((i1>i2)?(i1>i3)?i1:i3:(i2>i3)?i2:i3));
输入,输出:
//Scanner对象对象的调用
        /*Scanner scanner = new Scanner(System.in);
        scanner.nextInt();   》》只能传入int类型的数据
        scanner.next();      》》》只能传入String类型的数据
        */


        //1.键盘录入两个数,获取两个数的最大值
        Scanner scanner = new Scanner(System.in);
        int a = scanner.nextInt();
        int b = scanner.nextInt();
        System.out.println((a>b)?a:b);

println:换行输出
print:不换行输出

ew Scanner(System.in);
scanner.nextInt(); 》》只能传入int类型的数据
scanner.next(); 》》》只能传入String类型的数据
*/

    //1.键盘录入两个数,获取两个数的最大值
    Scanner scanner = new Scanner(System.in);
    int a = scanner.nextInt();
    int b = scanner.nextInt();
    System.out.println((a>b)?a:b);

println:换行输出
print:不换行输出




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值