小王学JAVA之JAVA基础语法

JAVA基础语法

注释,标识符,关键字

​ 注释:对代码的一个解释

分类:

  1. 单行注释 符号: // 注释 “//” 该符号后的字不会被执行

  2. 多行注释 符号:/ * 注释 * / "/ * “与”* * /"之间的不会被执行

  3. 文档注释 符号: /** */

标识符

​ 标识符:Java所有的组成部分都需要名字,类名,变量名以及方法名都被称为标识符

关键字
关键字

​ 标识符书写规则:

         1. 所有的标识符都应该以字母(A--Z或者 a--z),美元符号($),下划线(_)开始
         2. 首字符之后可以是字母(A--Z或者 a--z),美元符号($),下划线(_)或数字的组合
         3. 不能使用关键字作为变量名或方法名

数据类型详解

数据类型

  1. 强类型语言: 要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用

    ​ 优点:安全性提升,

    ​ 缺点:速度慢

  2. 弱类型语言

  3. JAVA数据类型分类:

      1. 基本类型:

      2. 数值类型:

        1. 整数类型:byte(2字节) short(4字节) int(6字节) long(8字节)(定义的数字后面加L)

        2. 浮点类型:float(4字节) double(8字节)

        3. 字符类型 char(char只能定义一个字符)

          ​ (String可以定义字符串,但不是数据类型,是类,)

      3. boolean类型: true和false

      4. 引用类型:类(string),接口,数组

  4. 字节

    1. 位(bit):是计算机内部数据存储的最小单位
    2. 字节(byte):是计算机中的数据处理的基本单位,习惯上用大写B来表示
    3. 1B = 8bit
    4. 字符:是计算机中使用的字母,数字,字和符号
    5. 1024B = 1KB 1024KB = 1M 1024M = 1G

代码:

  ```java

package Base;

public class Demo02 {
public static void main(String[] args) {
//八大数据类型

    //整数
    int num1 = 10;
    byte num2 = 12;
    short num3 = 20;
    long num4 = 100L;    //Long类型要在数字后面加个L

    //小数,浮点数
    float num5 = 50.1F;    //float后面加个F
    double num6 = 3.1415926;


    //字符类型

    //字符
    char name = 'A';    //(char只能定义一个字符)

    //字符串,String不是关键字,是类
    String name7 = "小王";

    //布尔值
    boolean flag = true;
    boolean flag1 = false;
}

}
```

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

public class Demo03 {
    public static void main(String[] args) {
        //整数拓展   进制   二进制0b  十进制  八进制0 十六进制0x

        int i = 10;
        int i2 = 010;   //八进制   0
        int i3  = 0x10;   //十六进制   0x    0~9  A~F
        System.out.println(i);
        System.out.println(i2);
        System.out.println(i3);
        System.out.println("==========================================");
        //浮点数拓展?   银行业务怎么表示?钱
        //银行业务不能使用浮点数,  使用BigDecimal  数学工具类
        //float     有限  离散  舍入误差  大约   接近但不等于
        //double
        //最好完全避免使用浮点数进行比较

        float f = 0.1f;  //0.1
        double d = 1.0/10; //0.1
        System.out.println(f == d);
        System.out.println(f);
        System.out.println(d);

        float d1 = 123456789f;
        float d2 = d1 + 1;
        System.out.println(d1 == d2);
        System.out.println("================================");


        //字符拓展
        char c1 = 'a';
        char c2 = '中';

        System.out.println(c1);
        System.out.println((int)c1);  //强制类型转换  将char类型转换成int类型

        System.out.println(c2);
        System.out.println((int)c2);

        //所有的字符本身都是数字
        //编码  Unicode(表有具体的对应编码)例如:(97 = a, 65 = A)   2字节  长度:0~65536

        //U0000   UFFFF
        char c3 = '\u0061';     //Unicode的书写: \u0061 = A
        System.out.println(c3);

        //转义字符
        //  \t  制表符    \n   换行    等等
        System.out.println("Hello\tWorld");

        //
        System.out.println("====================================");
        String sa = new String("hello world");
        String sb = new String("hello world");
        System.out.println(sa == sb);

        String sc = "hello world";
        String sd = "hello world";
        System.out.println(sc == sd);
        //对象和内存分析

        //布尔值扩展
        boolean flag = true;
        if(flag == true){} //if(flag == true){} = if(flag){}
        //代码要简练
    }
}

类型转换

  1. 由于JAVA是强类型语言,所以进行有些运算的时候,需要用到类型转换

    低-------------------------------------------------->高

    byte,short,char–> int -->long —>float —>double

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

  3. 强制类型转换

  4. 自动类型转换

public class Demo05 {
    public static void main(String[] args) {

        //强制转换    (类型)变量名   高--->低
        //自动转换     低---->高
        int i = 128;
        byte b = (byte)i;   //内存溢出,
        System.out.println(i);
        System.out.println(b);

        /*
        注意点:
              1. 不能对布尔值进行转换
              2. 不能把对象类型转换为不相干的类型
              3. 在把高容量转换到低容量的时候,强制转换
              4. 转换的时候存在内存溢出,或者精度问题
         */

        //精度问题
        System.out.println("================================");
        System.out.println((int)23.7);
        System.out.println((int)-45.89f);

        System.out.println("================================");
        char c = 'a';
        int d = c + 1;
        System.out.println(d);
        System.out.println((char)d);
    }
}

public class Demo06 {
    public static void main(String[] args) {
        //操作比较大的数时候,注意溢出问题
        //看数字不方便     数字之间可以用下划线分割
        int money = 1000_000_000;
        System.out.println(money);
        int years = 20;
        int total = money * years;

        System.out.println(total);

        long total2 = money * years;  //默认是int,转换之前已经算完了,所以该做法无效
        System.out.println(total2);

        long total3 = money * (long)years;
        System.out.println(total3);
    }
}

变量

  1. 变量:就是可以变化的量

  2. Java是一种强类型语言,每个变量都必须声明其类型

  3. Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域

    ​ type varName [=value] [{,varName[=value]}];

    ​ //数据类型 变量名 = 值; 可以使用逗号隔开来声明多个同类型变量。

    public class Demo07 {
        public static void main(String[] args) {
            //int a = 1,b = 2, c = 3;      不建议这样写,程序可读性差
            
            String name = "xiaowang";
            char x = 'X';
            double pi = 3.14;
        }
    }
    

    变量作用域:

    1. 类变量

    2. 实例变量

    3. 局部变量

      public class Demo08 {
          //类变量   static
          static double salary = 2500;
      
          /*实例变量:从属于对象;  如果变量不自行初始化,变量就是这个类型的默认值
          默认值:   数值类型: 0     0.0  布尔值:默认false
          除了基本类型其余为 null
           */
          String name;
          int age;
      
          //main方法
      
          public static void main(String[] args) {
      
              //局部变量;必须声明和初始化值
              int i = 10;
              System.out.println(i);
      
              //变量类型  变量名字 = new Demo08();
              Demo08 demo08 = new Demo08();
              System.out.println(demo08.age);
              System.out.println(demo08.name);
              //类变量 static
              System.out.println(salary);
          }
      
          //其他方法
          public void add(){}
      }
      
      
      1. 注意事项:

        1. 每个变量都有类型,类型可以是基本类型,也可以是引用类型

        2. 变量名必须是合法的标识符

        3. 变量声明是一条完整的语句,因此每一个声明都必须以分号结束

常量

  1. 常量:初始化后不能再改变值!不会变动的值

  2. 所谓的常量是一种特殊的变量,它的值设定后,在程序运行过程中不允许被改变

  3. ​ final 常量名 = 值;

    ​ final double PI = 3.14;

  4. 常量名一般使用大写字符

变量的命名规范

  1. 类成员变量: 首字母小写和驼峰原则:monthSalary,除第一个单词以外,后面的单词首字母大写 lastName

  2. 局部变量:首字母小写和驼峰原则

  3. 常量:大写字母和下划线:MAX_VALUE

  4. 类名:首字母大写和驼峰原则:Man, GoodMan 所以的单词首字母都要大写

  5. 方法名:首字母小写和驼峰原则:run(), runRun() 除第一个单词外,后面的单词首字母大写

    public class Demo09 {
        //static(静态的)是修饰符,不存在先后顺序
        static final double PI = 3.14;
    
        public static void main(String[] args) {
            System.out.println( PI);
        }
    }
    

运算符

Java语言支持如下运算符

  1. 算术运算符:+, -, *, /, %, ++, –

    package operator;
    
    public class Demo04 {
      public static void main(String[] args) {
          //++    ——   自增,自减  一元运算符
          int  a = 3;
    
          int b = a++;    // a++   先给b赋值(b = a = 3),在给a自增(a = a + 1 = 4),
          int c = ++a;    //++a    先给a自增(a = a + 1),在给b赋值(b = a + 1 = 5)
    
    
          //自增和自减等价
          System.out.println(a);
          System.out.println(b);
          System.out.println(c);
    
          //幂运算 2 ^ 3  2 ^ 2 ^ 2 = 8   很多运算使用工具类操作
          double pow = Math.pow(3,2);   //Math函数
          System.out.println(pow);
      }
    }
    
  2. 赋值运算符: =

    ```java
    

    package operator;

    public class Demo01 {
    public static void main(String[] args) {

        //二元运算符
    
        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);
    }
    

    }
    ```

  3. 关系运算符: >, <, >=, <=, ==, != instanceof(指出对象是否是特定类)

     ```java
    

    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);//c / a  21 / 10 = 2 ...  1
    
        System.out.println(a > b);
        System.out.println(a < b);
        System.out.println(a == b);
        System.out.println(a != b);
    }
    

    }
    ```

  4. 逻辑运算符: &&(与) , ||(或) , !(非)

    ```java
    

    package operator;

    //逻辑运算符
    public class Demo05 {
    public static void main(String[] args) {
    // 与(and) 或(or) 非(取反)

        boolean a = false;
        boolean b = true;
    
        System.out.println("a && b: " + (a && b) );   //逻辑与运算
        System.out.println("a || b:" + (a || b));    //逻辑或运算
        System.out.println("! (a && b): " + (! (a && b)));  //逻辑非运算
    
        //短路运算(如果能直接判断,就不会执行后面的)
    
        int c = 5;
        boolean d = (c < 4) && (c++ < 4);   //如果执行后面的,则c变为6
        System.out.println(d);
        System.out.println(c);
    }
    

    }

    ```
    
  5. 位运算符: &, |, ^, ~, >>(右移), <<(左移), >>> (仅仅作为了解)

    ​ 好处: 效率贼高

    package operator;
    
    public class Demo06 {
        public static void main(String[] args) {
            /*
            A = 0011 1100
            B = 0000 1101
    
            A & B  (一位一位计算)(只有1  1  得 1  , 其余都为0  )(结果: 0011 1100)
            A | B   (只要存在1,就为1)(0011 1101)
            A ^ B  (异或)(相同为0,不同为1)(0011 0001)
            -B      (取相反的)(1111 0010)
    
            面试题:
                 2 * 8 = 16怎样计算最快?
                 可以拆分为 2 * 2 * 2 * 2
                 << 左移   >> 右移
                 0000 0000     0
                 0000 0001     1
                 0000 0010     2
                 0000 0011     3
                 0000 0100     4
                 0000 1000     8
                 0001 0000     16
             */
    
            System.out.println(2 << 3);
        }
    }
    
  6. 条件运算符 ? : //必须掌握

    package operator;
    //三元运算符
    public class Demo08 {
      public static void main(String[] args) {
          //  x ? y : z
          //如果 x == true,则结果为y,否则结果为z
    
          int score = 80;
          String type = score < 60 ?"不及格":"及格";
          System.out.println(type);
      }
    }
    
  7. 扩展赋值运算符: +=, -=, *=, /=

    package operator;
    
    public class Demo07 {
        public static void main(String[] args) {
            int a = 10;
            int b = 20;
    
            a+=b;   //a = a + b;
            System.out.println(a);
            a-=b;   //a = a - b;
            System.out.println(a);
    
            //字符串连接符   + , + 号两侧只要出现字符串类型(例:""),
            System.out.println(a + b);
            System.out.println("" + a + b);   //结果:  1020
            System.out.println(a + b + "");   //结果:  30
        }
    }
    
    

优先级

​ (图片来源于360百科)运算符优先级

包机制

  1. 为了更好地组织类,Java提供了包机制,用于区别类名的命名空间

  2. 包语句的语法格式:

    ​ package pkg1[. pkg2[. pkg3…]];

     3. 一般利用公司域名倒置作为包名; com.xiaowang.www
    
     4. 为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包,使用“import”语句可以完成此功能
    
        ​    import package1[.package2...].(classname|*);
    
        ​    (例子:import java.util.Date;)
    
        import com.xiaowang.base.*     (*  表示通配,即这个包里的所有的类)
    

JavaDoc生成文档

  1. javadoc命令是用来生成自己API文档的

  2. 参数信息

    1. @author 作者名

    2. @version 版本号

    3. @since 指明需要最早使用的jdk版本

    4. @param 参数名

    5. @return 返回值情况

    6. @throws 异常抛出情况

      package Base;
      
      /**
       * @author xiaowang
       * @version 1.0
       * @since 1.8
       */
      public class Doc {
          String name;      //定义属性
      
          //定义方法
      
          /**
           *
           * @author xiaowang
           * @param name
           * @return
           * @throws Exception     //(自动提示抛出异常)
           */
          public String test(String name) throws Exception{
              return name;
          }
      }
      

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值