大数据之Java基础(二):Java基础语法 [上]

大数据之Java基础(二):Java基础语法 [上],第1张

大数据之Java基础(二):Java基础语法 [上] 1、关键字

        关键字 :被Java语言赋予特定含义的单词

        特点 :组成关键字的字母全部小写

        注意事项 :goto和const作为保留字存在,目前并不使用 ,类似IDEA这样的集成工具,针对关键字有特殊的颜色标记,非常直观。加上下列50个共有52个关键字:

2、常见命名规则 2.1、标识符

        标识符:给类,接口,方法,变量等起名字时使用的字符序列
        组成:1、英文大小写字母
                   2、数字
                   3、$和_

         注意事项:  
                1、不能以数字开头
                2、不能有除$和_以外的特殊字符出现
                3、不能是java关键字

 2.2、其他     2.2.1、包(理解为一个文件夹/目录)

              单级文件夹(所有字母全部小写)

                 举例:bigdata

              多级文件夹(所有字母全部小写,文件夹之间用 . 分开)

                 举例:com.bigdata.rz

           2.2.2、类或者接口

               一个单词组成(首字母大写其余字母小写)

                  举例:Hello

               多个单词组成(所有单词的首字母大写,其余字母小写)

                   举例:HelloWorld

            2.2.3、方法和变量

                一个单词组成(所有字母小写)

                   举例:eat

                多个单词组成(第一个单词全部小写,从第二个单词开始,首字母大写,其余字母小写)

                   举例:playGame

             2.2.4、常量

                  一个单词组成(所有字母全部大写)

                    举例:NAME

                   多个单词组成(所有字母全部大写,单词与单词之间用下划线连接)

                     举例:FIRST_NAME

3、注释

        注释 :用于解释说明程序的文字 Java中注释分类格式

        单行注释格式: // 注释文字

        多行注释格式:

        文档注释格式:

                注释是一个程序员必须要具有的良好编程习惯。 初学者编写程序可以养成习惯:先写注释再写代码。 将自己的思想通过注释先整理出来,在用代码去体现。 因为代码仅仅是思想的一种体现形式而已。

// 声明一个类,类名为HelloWoeld
class HelloWorld {
    // 定义main函数,使程序能被jvm调用
    public static void main(String[] args){
        // 调用输出函数,输出:HelloWorld!
        System.out.println("HelloWorld!");
    }
}
4、常量

        常量:在程序执行的过程中其值不可以发生改变 。Java中常量分为字面值常量和自定义常量

4.1、常量的分类

(1)字面值常量

字符串常量    用双引号括起来的内容    "abc"

整数常量        所有整数                         12,23

小数常量        所有小数                         12.34,56.78

字符常量        用单引号括起来的内容    ‘a’,’A’,’0’

布尔常量        较为特有,只有true和false

空常量           null(数组部分讲解)

(2)自定义常量(面向对象部分讲解)

4.2、进制 4.2.1、不同进制的数据组成

二进制:由0,1组成,以0b开头

八进制:由0,1,...,7组成,以0开头

十进制:由0,...,9组成,整数默认是十进制的

十六进制:有0,1,...,9,a,b,c,d,e,f组成,以0x开头

4.2.2、进制转换 

其他进制转十进制:系数*基数^权的和

十进制转其他进制:除基取余,直到商为0,余数反转

二进制与十进制的快速转换:8421码

任意进制之间的转换:1、以十进制为桥梁   
                                    2、拆分组合法
                                          a: 八进制3位为一组
                                          b: 十六进制4位为一组

 
 4.3、有符号数据表示法 

        在计算机内,有符号数有3种表示法:原码、反码和补码。所有数据的运算都是采用补码进行的。

        原码:就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。

        反码:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。

        补码:正数的补码与其原码相同;负数的补码是在其反码的末位加1。    

5、数据类型

    5.1、基本数据类型(从小到大)

       整数类型:
        byte          1个字节         -2^7~2^7-1
        short         2个字节         -2^15~2^15-1
        int             4个字节         -2^31~2^15-1
        long          8个字节         -2^63~2^63-1

       浮点类型:
        float          4个字节         -3.403*10^38 ~ 3.403*10^38
        double      8个字节         -1.798*10^308 ~ 1.798*10^308

       字符型:
        char          2个字节

        布尔型:

        boolean    1个字节


    5.2、引用数据类型(面向对象部分讲解)     5.3、数据类型转换

     自动类型转换:
        byte,short,char在参与运算的时候会自动提升到int类型
        由大的数据类型接收小的数据类型,会自动转换,不会报错。
    强制类型转换
        由小的数据类型接收大的数据类型,会报错,接收不了,这时候需要强制类型转换
        格式:目标数据类型 目标变量名 = (目标数据类型)要转换的数值/变量

public class DataTypeDemo{
    public static void main(String[] args) {
//        byte b = 130;

        byte b = (byte)130;
        System.out.println(b);  // -126
        b = (byte)131;
        System.out.println(b);

        byte b1 = (byte)300;
        System.out.println(b1); // 44
    }
}


6、运算符 6.1、算数运算符

 6.1.1、+,-,*,/,%
public class DataTypeDemo{
    public static void main(String[] args) {
        System.out.println("hello"+'a'+1); // helloa1
        System.out.println('a'+1+"hello"); // 98hello
        System.out.println("5+5="+5+5); // 5+5=55
        System.out.println(5+5+"=5+5"); // 10=5+5

        //System.out.println("5+5="+5+5); // 5+5=55 我想先计算后面的5+5怎么办?
        //小括号可以改变运算的顺序优先级
        System.out.println("5+5="+(5+5));
    }
}
public class OptArithmeticDemo{
    public static void main(String[] args) {
        //+ 加法运算
        System.out.println(1+1);    //2

        //-减法运算
        System.out.println(5-2);    //3

        /
public class OptArithmeticDemo{
    public static void main(String[] args) {
        int a = 10;
        int b = 10;
        int c = 10;

        a = b++; // a=10  ,b=11  ,c=10
        c = --a; // a=9  ,b=11  ,c=9
        b = ++a; // a=10  ,b=10  ,c=9
        a = c--; // a=9  ,b=10  ,c=8

        System.out.println(a); // 9
        System.out.println(b); // 10
        System.out.println(c); // 8
    }
}
public class OptArithmeticDemo{
    public static void main(String[] args) {
        int a = 4;
        int b = (a++)+(++a)+(a*10);
        //        4     6      60
        //       a=5   a=6    a=6

        System.out.println(a);//6
        System.out.println(b);//70
    }
}
6.2、赋值运算符

    short s=1, s = s+1;
    short s=1, s += 1;
    上面两个代码有没有问题,如果有,那里有问题?
            第一个有问题,因为变量参与运算,首先会提升数据类型,然后做运算。所以 s = s+1;s会提升到int类型然后再做加法运算,最终的结果是int类型,所以拿short类型接收会报错,所以要想成功赋值,就得强制类型转换。

            第二个代码没有问题,是因为内部自动包含了强制类型转换,s+=1 ===>  s = (s的数据类型)(s+1)

public class OptFuZhiDemo{
    public static void main(String[] args) {
//        int a = 10;
//        int b = a;
//        System.out.println(a);
//        System.out.println(b);

        // +=
//        int a += 10;
        int a = 10;
        a += 20; //这里实际上可以看作为a的值加上了一个20再赋值给a
                 //但是不能完全等于 a = a + 20
                 //因为a += 20等价于a = (int)(a + 20)
        System.out.println(a);

        //-=
        a-=10;
        System.out.println(a); //20

        /

    }
6.6、位运算符

public class OptWeiDemo{
    public static void main(String[] args) {
        byte a = 3;
        byte b = 4;
        System.out.println(a&b);
        System.out.println(a|b);
        System.out.println(a^b);
        System.out.println(~a); //-4
    }
}

public class OptWeiDemo2 {
    public static void main(String[] args) {
        System.out.println(3<<2); //12 = 3*4 = 3*2^2
        System.out.println(24>>2); //6 = 24/(2*2)
        System.out.println(-24>>2);// -6
        System.out.println(-24>>>2);//1073741818

        System.out.println(3<<3); // 3*2^3

    }
}


 面试题: 请用最有效率的方式写出计算2乘以8的结果
     a<

     a>>b  ==  a/2^b

 

                                                                                                                               --2022.1.4

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5696735.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存