Java基础语法-学习笔记

笔记整理来源 B站UP主狂神说 https://www.bilibili.com/video/BV12J41137hu?p=20

JAVA基础语法

注释、标识符、关键字

  • 注释有三种:

    • 单行注释; //

    • 多行注释: /* */

    • 文档注释: /** */ 里面的内容可以包含部分部分自动识别

  • 标识符

    • 关键字:在这里插入图片描述

    • java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。

    • 所有的标识符都应该以字母(A-Z或者a-z),美元符($)、或者下划线(_)开始。

    • 首字符之后可以是字母(A-Z或者a-z),美元符($)、或者下划线(_)或数字的任何字符组合。

    • 不能使用关键字作为变量名或方法名。

    • 标识符是大小写敏感的,大小写是不一样的。

    • 可以使用中文命名,但一般不建议。

数据类型

  • 强类型语言

    • 要求变量的使用要严格规定,所有变量都必须先定义后才能上使用。
    • 例如:c语言,c++等
  • 弱类型语言

    • 例如VBScript、JavaScript
  • Java的数据类型分为两大类

    • 基本类型(primitive type)

      • 数值类型

        • 整数类型

          • byte占1个字节范围:-128 - 127
          • short占2个字节范围:-32768 - 32767
          • int占4个字节范围:-21_4748_3648 - 21_4748_3647(正负21亿)
          • long占8个字节范围:-922_3372_0368_5477_5808 - 922_3372_0368_5477_5807
        • 浮点类型

          • float占4个字节
          • double占8个字节
        • 字符类型char:占2个字节

      • boolean类型:占1位其值只有true和false两个

      • 字节解释:

        • 位(bit):是计算机内部数据存储的最小单位,11001100是一个8位2进制数。
        • 字节(byte):是计算机中数据处理的基本单位,习惯上用大写B来表示。
        • 1B(byte,字节)= 8bit(位)
        • 字符:是指计算机中使用的字母、数字、字和符号
        • 1bit表示1位
        • 1Byte表示一个字节 1B=8b
        • 1024B = 1KB
        • 1024KB = 1M
        • 1024M = 1G
      • 科普:32位的电脑最大支持4G内存;64位电脑最大支持128G内存。

    • 引用类型(reference type)

      • 接口
      • 数组

数据类型扩展及面试题讲解

  • 注意事项:

    • float和double这样的浮点型数据能表现的字长是有限的,离散的,会存在舍入误差,结果是一个大约数,接近单不等于,最好的方式是完全避免使用浮点数进行比较。对于银行业务等的开发,可以使用BigDecimal这样的数学工具。

    • // 布尔值扩展
      boolean flag = true;
      if (flag==true){      // if(flag)与if(flag==true)在这里是等价的,前者更好
      
      }
      
    • // 整数拓展  进制 二进制0b  十进制 八进制0  十六进制0x
      int i = 10;
      int i2 = 010;     // 八进制0,每8进1
      int i3 = 0x11;    // 十六进制0x,每16进1
      System.out.println(i);  // 10
      System.out.println(i2); // 8
      System.out.println(i3); // 17
      
    • // 字符拓展
      //===========================================================
      char c1 = 'a';
      char c2 = '中';
      System.out.println(c1);
      System.out.println((int)c1);  // 强制转换数据类型
      System.out.println(c2);
      System.out.println((int)c2);  // 强制转换数据类型
      // 所有的字符本质还是数字
      // 编码 Unicode 表:97 = a  ; 2字节  最多可以表示 0 - 65536个字符
      // 早期Excel  最长2^16 = 65536
      
      // Unicode表的编码:U0000 UFFFF 表示的范围
      char c3 = '\u0061';
      System.out.println(c3);
      
    • // 转义字符
      //===========================================================
      // \t   制表符
      // \n   换行
      // ...
      System.out.println("Hello\tWorld");
      System.out.println("Hello\nWorld");
      

类型转换

  • 由于是强类型语言,所以在有些运算的时候,需要用到类型转换。

    • 在这里插入图片描述

    • 字节大小排序,由低到高,但是long大于float,因为小数的优先级一定大于整数。

  • 运算中,不同类型的数据先转化为同一类型,然后进行计算。

  • 强制类型转换

    • 例如:int i = 12;

    ​ byte j = (byte)i;//此时j = 12

  • 自动类型转换

    • 由低到高是不需要转换的
    • 例如int i = 12,;

    ​ double j = i;//此时j等于12.0

  • 注意点:

    • 不能转换成不相关的数据类型

    • 不能对布尔值进行转换 // boolean类型:占1位其值只有true和false两个

    • 在把高容量转换到低容量的时候,强制转换

    • 转换的时候可能存在内存溢出,或者精度问题//例如小数点后的数据自动抹除。

    • 数字之间可以使用下划线进行分割。

    • public class Demo05 {
          public static void main(String[] args) {
              int i = 128;
              byte b = (byte)i;
              System.out.println(i);
              System.out.println(b); // 由于byte的范围是-128 - 127,因此此时发生内存溢出,因此虽然强制转换了,但是数值是什么是不确定的。
      
              double j = i;
              System.out.println(j);
      
              System.out.println("=======================");
              char k = 'a';
              int l = k + 1;
              System.out.println(l);
              System.out.println((char)l);
      
              int money = 20_0000_0000;  //数字之间可以使用下划线进行分割,int的范围是-21亿-+21亿(-21_4748_3648 - 21_4748_3647)
              System.out.println(money);
      
              int year = 20;
              long total = (long)money * year; //此处应该是任意一个类型转换为浮点数,相乘(加)后依然是浮点数。
              System.out.println(total);
      
          }
      }
      

变量、常量

  • 变量

    • 类变量

    • 实例变量

    • 局部变量

      public class Variable{
          static int allClicks = 0;   //类变量
          String str = "hello world"; //实例变量
          
          public void method{
              int i = 0;              //局部变量
          }
      }
      
  • 常量:初始化之后就不能再改变值!不会变动的值。

    • 常量名一般使用大写字符
    • 它的值被设定后,在程序运行过程中不允许被改变。
    final 常量名=;
    final double PI=3.14;
    
  • 命名规范

    • 所有变量、方法、类型:见名知意,尽量用相关英文单词
    • 类成员变量:首字母小写和驼峰原则:monthSalary
    • 局部变量:首字母小写和驼峰原则
    • 常量:大写字母和下划线:MAX_VALUE
    • 类名:首字母大写和驼峰原则:Man, GoodMan
    • 方法名:首字母小写和驼峰原则:run(), runRun()

运算符

优先级:首先是一元运算符(加减乘除等),然后是与或非,避免出错可多使用()进行优先级区分。

  • 算数运算符:+ - * / % ++ – //java里取余运算被称为模运算

  • 赋值运算符:=

  • 关系运算符:> < >= <= == != instanceof //最后的单词是面向对象里用的

  • 逻辑运算符:&& || ! // 与 或 非

  • 位运算符:& | ~ >> << >>> //后边的四个了解即可,前面的四个需要掌握;位运算是与计算机操作有关的,下面两个是用来简化(偷懒)的。

  • 条件运算符:? :

  • 扩展赋值运算符:+= -= *= /=

  • package operator;//算术运算符
    
    public class Demo01 {
        public static void main(String[] args) {
            //二元运算符
            //Ctrl+D; 复制当前行到下一行
            int a = 10;
            int b = 20;
            int c = 25;
            int d = 25;
    
            System.out.println(a+b);
            System.out.println(a-b);
            System.out.println(a*b);
            System.out.println(a/(double)b);//结果可能为小数的时候需要注意数据范围
    
        }
    }
    
  • package operator;//算数运算符
    
    public class Demo02 {
        public static void main(String[] args) {
            long a = 123312312312L;
            int b = 123;
            short c = 10;
            byte d = 8;
    
            //运算过程中 有long则结果为long
            //          无long则结果为Int
            //          有double则结果为double
    
            System.out.println(a+b+c+d);//Long
            System.out.println(b+c+d);  //Int
            System.out.println(c+d);    //Int
    
    
        }
    }
    
  • package operator;//关系运算符
    
    public class Demo03 {
        public static void main(String[] args) {
            //关系运算符返回的结果: 正确,错误   布尔值
            int a = 10;
            int b = 20;
            int c = 21;
    
            //取余,也叫模运算
            System.out.println(c%a);
    
            System.out.println(a>b);
            System.out.println(a<b);
            System.out.println(a==b);
            System.out.println(a!=b);
    
        }
    }
    
  • package operator;//算数运算符
    
    import java.sql.SQLOutput;
    import java.util.SortedMap;
    
    public class Demo04 {
        public static void main(String[] args) {
            //++自增  --自减  一元运算符
            int a = 3;
            int b = a++;//先赋值再自增,相当于在这句下边有a=a+1;
            System.out.println(a);
    
            int c = ++a;//先自增再赋值,相当于在这局上面有a=a+1
    
            System.out.println(a);
            System.out.println(b);
            System.out.println(c);
    
            int d = 4;
            int e = 5;
            System.out.println(d++ + ++e);//10,此处相当于上一行有e=e+1;下一行有d=d+1;
    
            //幂运算  没有^运算符,因此需要借助一些工具来实现
            //       很多操作可以使用一些工具类才操作。
            System.out.println((int)Math.pow(2,3));
        }
    
    }
    
  • 位运算

  • package operator;
    //位运算
    public class Demo06_WeiYunSuan {
        public static void main(String[] args) {
            /*
            A = 0011 1100
            B = 0000 1101
    
            A&B = 0000 1100  //与,都为1为1,否则为0
            A|B = 0011 1101  //或,有1为1,其余为0
            A^B = 0011 0001  //异或,相同则为0,否则为1
            ~B  = 1111 0010  //取反
    
            //面试题  2*8怎么运算最快
            效率极高!!!2*2*2*2
            << 左移 *2
            >> 右移 /2
    
            0000 0000  0
            0000 0001  1
            0000 0010  2
            0000 0100  4
            0000 1000  8
            0001 0000  16
    
             */
            System.out.println(2<<3);
    
        }
    }
    
  • 条件运算符:?:

  • package operator;
    
    public class Demo08_SanYuanYunSuanFu {
        public static void main(String[] args) {
            // x ? y : z
            //如果x==true,则结果为y,否则为z
            int score = 80;
            String type = score < 60 ? "不及格" : "及格";//必须掌握
            //相当于if
            System.out.println(type);
        }
    }
    

包机制

为了更好的组织类,包机制用于区别类名的命名空间。

本质就是文件夹。

包语句的语法格式为:

package pk1[.pk2[.pk3]]; 

一般利用公司域名倒置作为包名: com.baidu.www

导入包

import package1[.package2...].(className|*);

*号会导入这个包下所有的类;

推荐看《阿里巴巴java开发手册2018》学习语法规范。

JavaDoc

是用来生成自己API的文档

参数信息(前两个会就ok)

  • @author 作者号
  • @version 版本号
  • @since 指明需要最早使用的jdk版本
  • @param 参数名
  • @return 返回值情况
  • @throws 异常抛出情况

jdk8帮助文档,在线版,需要反复学习。

通过命令行生成文档(在浏览器内阅读):

  • 右键doc,在explore中打开
  • cmd
  • javadoc -encoding UTF-8 -charset UTF-8 Doc.java //javadoc 后面的一长串到Doc.java之前的都是用来避免中文出现乱码的情况的;
  • 生成的网页,可以打开index文件

作业:学会使用IDEA生成JavaDoc文档:

在这里插入图片描述

基础部分的一切知识,后面几乎每天都会用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值