2021-2-15 基础语法

基础语法

注释

  • 单行注释

    //
    

    只能注释一行文字

  • 多行注释

/*注释*/

可以注释一段文字

  • 文档注释

注释并不会执行,是给我们写代码的人看的,书写注释是一个良好的习惯

数据类型

  • 强类型语言

    要求变量的使用严格符合规范,所有的变量都必须先定义才能使用

  • 弱类型语言

  • Java的数据类型分为两大类

    • 基本类型(primitive type)

      1.数值类型

      ​ a.整数类型:byte占1个字节

      ​ short占2个字节

      ​ int 占4个字节

      ​ long 占8个字节

      ​ b.浮点类型:float占4个字节

      ​ double占8个字节

      ​ c.字符类型:char占2个字节

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

      public class Demo02 {
          public static void main(String[] args) {
            //八大基本数据类型
      
      
              //1.整数
              int num1 =10;
              byte num2 = 20;
              short num3 =30;
              long num4 = 30L;//Long类型要在数字后面加个L
      
      
              //2.小数;浮点数
              float num5 = 50.1F;//Lfloat类型要在数字后面加个F
              double num6 = 3.14159263333333333333;
      
      
              //字符
              char name ='叶';// ''内只能是一个字可以字母或者汉字
                             //字符串,String不是关键字,类
                    //String name1 = "中国";
      
              //布尔值 (是非)
              boolean flag = true;
                     //boolean flag1 = false;
                  }
      }
      
      

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

      public class Demo03 {
          public static void main(String[] args) {
              //整数拓展 二进制0b  十进制  八进制0   十六进制0x(小写x)
      
      
              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("===================================================");
      //======================================================================================================
              //浮点数扩展
      //======================================================================================================
              //float;
              //doudle
              float a = 0.1f;    //0.1
              double b= 1.0/10;  //0.1
              System.out.println(a==b);
      // System.out.println(a==b);执行结果为 false
             float d1 = 21545421245215f;
             float d2 = d1+1;
              System.out.println(d1==d2);
      //执行结果为true
      //说以得出结论 浮点:有舍入误差 无法精确计算 (接近但不等于)少用浮点数进行比较
              System.out.println("===================================================");
      //======================================================================================================
             //字符拓展
              System.out.println("===================================================");
           char c1 ='a';
      char c2 = '中';
              System.out.println(c1);
              System.out.println((int)c1);//强制转换(这里把字符串转换成int)
              System.out.println(c2);
              System.out.println((int)c2);//强制转换(这里把字符串转换成int)
              System.out.println("===================================================");
      //所有的字符,本质还是数字 (比如中=20013 a=97) 都为Unicode表的编码
                 //比如:
              char c3 = '\u0061';
              System.out.println(c3);//输出为a(\u0061 Unicode表编码为a)
              //转义字符
              // \t 制表符(空格)
              // \n 换行
              // \ 等等
      
              System.out.println("21\tsuga");//输出后为21  suga
              System.out.println("21\nsuga");//输出为21 换下一行suga
              System.out.println("===================================================");
            // String  sa = new String(original:"21suga");
            // String  sb = new String(original:"21 suga");
              System.out.println("===================================================");
            //目前上段写不出来
          String sa = "hello world";
            String sc = "hello world";
              System.out.println(sa==sc);
      //布尔值扩展
              boolean falag =true;
              if (falag==true){}//新手
              if (falag){}//老手
              //Less is More! 代码要精简易读
      
      
      
      
      
      
      
      
          }
      }
      
      
    • 引用类型

类型转换

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

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

  • 强制类型转换

    低————————————————————————高

    byta,short,char->int->long->float->doubke

  • 自动类型转换

    高————————————————————————低

    import java.sql.SQLOutput;
    
    public class Demo04 {
        public static void main(String[] args) {
            int i =129;
    
            byte b = (byte)i;//内存溢出输出为-127
            //强制转换 (类型)变量   高--低
            //自动转换 低--高
            double c= i;
            System.out.println(c);
            System.out.println(i);
            System.out.println(b);
            /*
         注意点:
         1.他不能对布尔值进行转换
         2.不能把对象类型转换成不相干的类型
         3.在把高容量转换到低容量的时候(使用强制转换)低到高:反之
         4.转换的时候可能存在内存溢出,或者精度问题!
             */
            System.out.println("=====================================================");
            System.out.println((int)23.7);//输出为23
            System.out.println((int)-54.7154545f);//输出为-54
            System.out.println("=====================================================");
            int money = 10_0000_0000;
            int years = 20;
            int total = money*years;
            System.out.println(total);//输出为-1474836480,计算内存溢出
            long total2= money*years;//输出为-1474836480,计算内存溢出 (在money*years时就已经溢出了)
           long total3 = money*((long)years);//输出为20000000000,正确
            System.out.println(total2);
            System.out.println(total3);
        }
    }
    
    

变量-常量

  • 变量
    • 变量是什么:就是可以变化的量!
    • Java是一种强类型语言,每个变量都必须申明其类型。
    • Java变量是程序中最基本的储存单元,其要素包括变量,变量类型和作用域

数据类型–表变量名=值; (可以使用逗号隔开声明多个同类型变量)

  • 注意事项

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

    • 变量命必须是合法的标识符。

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

      public class Demo05 {
          public static void main(String[] args) {
              String name= "suga";
              char x = 'X';
              double p1 =3.14;
              
          }
      }
      
      
      • 变量的作用域

        1.类变量

        2.实例变量

        3.局部变量

        public class Demo08 {
            //属性:变量
        
        
            //类变量 static
            static double salary =2500;
        
            //实例变量:从属于对象;如果不自行初始化,他会变成这个类型的默认值 0    0.0   u0000
            //布尔值:默认是false
            //除了基本类型,其余的默认值都是mull;
            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("===============================================");
                System.out.println(demo08.age);
                System.out.println(demo08.name);
                //类变量 static
                System.out.println(salary);
            }
            //其他方法
            public void add(){
        
            }
        }
        
        
  • 常量

    • 常量(Constant):初始化(initialize)后不能再改变值!不会动的值。

    • 所谓常量可以理解为一种特殊的变量,他的值被设定后,在程序运行过程中不允许被改变。

      fianal 常量名=值;

      final double PI=3.14;

    • 常量名一般一般使用大写字符

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

      (final代表常量,double代表数据类型,static代表类变量)

  • 变量的命名规范

    • 所有变量,方法,类名:见名知意

    • 类成员变量:首字母小写和驼峰原则:monthSalaryc

      除了第一个单词以外,后面的单词首字母大写

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

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

    • 类名:首写字母大写和驼峰原则;Man, GoodMan

    • 方法名:首字母大写和驼峰原则:run(), runRun()

运算符

Java 语言支持如下算符:

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

  • 赋值运算符:=

  • 关系运算符:>,<,>=,<=,==。!= instannceof

  • 逻辑运算符:&&,||,!

  • 位运算符:&,|,^,~,>>,<<,>>>

  • 条件运算符?:

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

    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);
        }
    }
    
    
    public class Demo02 {
        public static void main(String[] args) {
            long a = 123_123_123_123_123L;
            int b = 123;
            short c =10;
            byte d =8;
            System.out.println(a+b+c+d);//long
            System.out.println(b+c+d);//int
            System.out.println(c+d);//ine
            System.out.println((double) c+d);
            //扩展:单词cast 转换
            //如果有long 转换的为long 如果有int转换为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);//计算方式为:c / a   21/10 = 2....1
            System.out.println(a>b);//false
            System.out.println(a<b);//true
            System.out.println(a==b);//false
            System.out.println(a!=b);//true
        }
    }
    
    
  • 自增自减运算符,初识Math类

package operator;

public class Demo4 {
   public static void main(String[] args) {
       int a = 100;
       int b = a++;//执行完这行代码,先给b赋值,a再自增 (已知a=3 把a赋值给b a+1)
       // a = a + 1;
       System.out.println(a);
       System.out.println("=================================================");

       //a = a + 1;
       int c = ++a;//执行完这行代码前,先自增,再给b赋值(已知a=3 a+1 再给b赋值 "目前a=4 因为 int b = a++;“

       System.out.println(a);
       System.out.println(b);
       System.out.println(c);
       System.out.println("=================================================");
       //幂运算
       //举例:2^3=2*2*2
        //很多运算,我们会使用一些工具类来操作!
       double pow = Math. pow (2,3);
       System.out.println(pow);

   }
}

  • 逻辑运算符

    package operator;
    
    public class Demo05 {
        public static void main(String[] args) {
            //与 (and) 或(or) 非(取反)
            boolean a = true;
            boolean b = false;
    
            System.out.println("a && b:"+(a && b));//逻辑 与 运算;两个变量都为真,结果为true
            System.out.println("a||b:"+(a || b));//逻辑 或 运算;两个变量有一个为真,结果为true(若是两个为假结果为false)
            System.out.println("!(a && b):"+!(a && b));//如果是真,则为假,如果是假,则为真
    
    
        }
    }
    
     System.out.println("=============================================================");
    
    package operator;
    
    public class Demo05 {
        public static void main(String[] args) {
            //与 (and) 或(or) 非(取反)
            boolean a = true;
            boolean b = false;
    
            System.out.println("a && b:"+(a && b));//逻辑 与 运算;两个变量都为真,结果为true
            System.out.println("a||b:"+(a || b));//逻辑 或 运算;两个变量有一个为真,结果为true(若是两个为假结果为false)
            System.out.println("!(a && b):"+!(a && b));//如果是真,则为假,如果是假,则为真
    //短路运算
            int c =5;
            boolean d = (c<5)&&(c++<4);
            System.out.println(d);
            System.out.println(c);//输出为5因为 c++>4 
            System.out.println("=============================================================");
            int c1 =5;
            boolean d1 = (c1<8)&&(c1++<8);
            System.out.println(d1);
            System.out.println(c1);
    
        }
    }
    
    
    • 位运算符

      package operator;
      
      public class Demo06  {
          public static void main(String[] args) {
           /*
           A = 0011 1100
           B = 0000 1101
      ----------------------------------------------
           A&B = 0000 1100          (如果都是1则为1,否则为0)
           A|B = 0011 1101          (如果对应为0则为0,否则为1)
           A^B = 0011 0001          (如果位置相同则为0,否则则为1)
           ~B  = 1111 0010          (取反)
      
            2*8 = 16   2*2*2*2
            效率低      效率高
      
            <<   *2
            >>   /2
            0000 0000      0
            0000 0001      1
            0000 0010      2
            0000 0011      3
            0000 0100      4
            0000 0101      5
            0000 0110      6
            0000 0111      7
            0000 1000      8
            0000 1001      9
            0000 1010      10
            0000 1011      11
            0000 1100      12
            0000 1101      13
            0000 1110      14
            0000 1111      15
            0001 0000      16
      
            */
              System.out.println(2<<3);
      
          }
       }
      
  • Java中的<< 和 >> 和 >>> 详细分析

 注:以下数据类型默认为byte-8位

 左移时不管正负,低位补0

 正数:**r = 20 << 2**

   20的二进制补码:**0001 0100**

   向左移动两位后:**0101 0000**

         结果:**r = 80**

 负数:**r = -20 << 2**

   -20 的二进制原码 :**1001 0100**

   -20 的二进制反码 ***\*:\**1110 1011**

   -20 的二进制补码 :**1110 1100**

   左移两位后的补码:**1011 0000**

         反码:**1010 1111
 **

         原码:**1101 0000
 **

         结果:**r = -80
 **

 **>>表示右移,如果该数为正,则高位补0,若为负数,则高位补1**

 注:以下数据类型默认为byte-8位

 正数:**r = 20 >> 2**

   20的二进制补码:**0001 0100**

   向右移动两位后:**0000 0101**

        结果:**r = 5**

 负数:**r = -20 >> 2**

   -20 的二进制原码 :**1001 0100**

   -20 的二进制反码 **1110 1011
 **

   -20 的二进制补码 :**1110 1100** 

   右移两位后的补码:**1111 1011** 

         反码:**1111 1010**

         原码:**1000 0101**

         结果:**r = -5**

 **>>>表示无符号右移,也叫逻辑右移,即若该数为正,则高位补0,而若该数为负数,则右移后高位同样补0**

 正数: **r = 20 >>> 2**

     的结果与 r = 20 >> 2 相同;

 负数: **r = -20 >>> 2**

 注:以下数据类型默认为int 32位

   -20:源码:**10000000 00000000 00000000 00010100**

     反码:**11111111 11111111  11111111  11101011**

     补码:**11111111 11111111  11111111  11101100**

     右移:**00111111 11111111  11111111  11111011**

     结果:**r = 1073741819**

  





  • 三元运算符,及小结

    package operator;
    
    public class Demo07 {
        public static void main(String[] args) {
            int a = 10;
            int b = 20;
    
            a+=b; //a =a+b
            a-=b; //a =a-b
            System.out.println(a);
            //字符串连接符 +,string
            System.out.println(a+b);
            System.out.println(""+a+b);
    
        }
    }
    
  • 三元运算符

    package operator;
    
    import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;
    //三元运算符
    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);
    
      }
    
    }
    
    

包机制

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

  • 包语句的语法格式为:

    • package pkg1[. pjg2[. pkg3…]];

      //包机制 下段自动加的
      package com.suga.operator;
      
      
      
      
      
      public class Demo09 {
          public static void main(String[] args) {
      
              
              System.out.println();
          }
      }
      
      
  • 一般利用公司域名倒置作为包名;

    如:www.baidu.com 倒置:com.baidu.www

  • 为了能够是由某一个包的成员,我们需要在java程序中明确导入该包。使用"import"语句可完成此功能

    • 导入语法

      import package1[.package2…] . (classname|*);

package com.suga.operator;

//输入Date 自动导入该包 
import java.util.Date;

public class Demo09 {
    public static void main(String[] args) {
        //输入Date 
Date

        System.out.println();
    }
}
  • 导入自己写的其他类
package com.suga.operator;

//导入时名字不要一样
import com.suga.base.HelloWorld;

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

        System.out.println();
    }
}

  • 扩展

    *为通配符,目录下所有类都导入

import com.suga.base.*;

JavaDoc文档

  • javadc命令是用来生成自己的API文档

  • 参数信息

    • @author 作者名

    • @version 版本号

    • @since 是指需要最早时间的jdk版本

    • @param 参数名

    • @return 返回值情况

    • @throws 异常抛出情况

    • package com.suga.base;
      
      public class Doc {
      /**
       * @author Suga
       * @version 1.0
       * @since 1.8
       */
      
          String name;
      
          /**
           * @author Suga
           * @param name
           * @return
           * @throws Exception
           */
          public String test(String name) throws Exception {
              return name;
      
      
          }
      }
      

javadoc -encoding(编码) UTF-8(编码格式)-charset(字符级) UFT-8 Doc.java

javadoc -encoding UTF-8 -charset UFT-8 Doc.java

  • IDEA生成Java Doc文档

    1.首先选择需要生成文档的代码

    2.点击Tools,选择Generate JavaDoc…

    3.选择要生成的项目

    4.选择生成位置

    5.输入生成语言-encoding utf-8 -charset utf-8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值