tyro_wang

导航

Java基础语法

Java基础语法

一、注释、标识符、关键字

Java中的注释有三种:

  1. 单行注释

    //注释

  2. 多行注释

    /* 注释 */

  3. 文档注释

    /** 注释 */

     /**
              * @Description HelloWorld
              * @Author   tyro_wang
              */
  1. 有趣的代码注释

    在百度搜索 有趣的代码注释

     

     

标识符

  • 关键字

     

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

  •  

标识符注意点

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

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

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

  • 标识符是大小写敏感的

  • 合作标识符举例:age、$salary、_value、__1_value

  • 非法标识符举例:123abc、-salary、#abc

  • 可以使用中文命名,但是一般不建议这样去使用,也不建议使用拼音,很Low

 

二、数据类型

强类型语言

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

弱类型语言

Java的数据类型分为两大类

  • 基本类型(primitive type)

  • 引用类型(reference type)

 

 //八大基本数据类型
 
         //整数
         int num1 = 10;  //最常用
         byte num2 = 20;
         short num3 = 30;
         long num4 = 30L;  //Long类型要在数字后面加个L
 
         //小数:浮点数
         float num5 = 50.1F;  //float类型要在数字后面加个F
         double num6 = 3.141592653589793238462643;
 
         //字符
         char name = 'A';
         //字符串,String不是关键字,是类
         //String namea = "tyro_wang";
 
         //布尔值   是非
         boolean flag = true;
         //boolean flag = false;

 

什么是字节?

  • 位(bit):是计算机 内部数据 存储的最小单位,11001100是一个八位二进制数。

  • 字节(byte):是计算机中 数据处理 的基本单位,习惯上用大写B来表示,

  • 1B(byte,字节) = 8bit(位)

  • 字符:是只计算机中使用的字母、数字、字和符号


  • 1bit表示1位,

  • 1Byte表示一个字节 1B=8b.

  • 1024B=1KB

  • 1024KB=1M

  • 1024M=1G.


  • 思考:电脑的32位和64位的区别是什么呢?

    32位最多支持4G内存,64位最多支持128G内存

常见的问题

  • 整数扩展

     //整数拓展:   进制    二进制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);

     

     D:\developer_tools\Java\jdk1.8.0_161\bin\java.exe Demo3
     10
     8
     16
     
     Process finished with exit code 0
  • 浮点数拓展

             //==============================================================
             //浮点数拓展? 银行业务怎么表示?钱
             //用BigDecimal 数学工具类
             //==============================================================
             //float
             //double   不能用这两个类型去操作
             //浮点类型: 有限 离散 舍入误差 大约 接近但不等于
             //结论:最好完全不使用浮点数进行比较
     
             float f = 0.1f;  //0.1
             double d = 1.0/10;  //0.1
     
             System.out.println(f==d);  //false
             System.out.println(f);
             System.out.println(d);
     
             //第二个实例
             float d1 = 23131312312312313f;
             float d2 = d1 + 1;
             System.out.println(d1==d2);  //true

     

     =============================
     false
     0.1
     0.1
     true
     =============================
  • 字符拓展

             //==============================================================
             //字符拓展?
             //==============================================================
             char c1 = 'a';
             char c2 = '中';
     
             System.out.println("=============================");
             System.out.println(c1);
             System.out.println((int) c1);  //强制转换
             System.out.println(c2);
             System.out.println((int)c2);    //强制转换
             //所有的字符本质还是数字
             //编码 Unicode 表:(97 = a 65 = A) 2字节 0-65536
     
             // U0000 -   UFFFF
             char c3 = '\u0061';
             System.out.println(c3);  //a
     
             //转义字符
             // \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);  //false
     
             String sc = "hello world";
             String sd = "hello world";
             System.out.println(sc==sd);  //true
             //对象 从内存分析

     

     =============================
     a
     97
     
     20013
     a
     Hello World
     =============================
     false
     true
  • 布尔值拓展

             //==============================================================
             //布尔值拓展?
             //==============================================================
             boolean flag = true;
             if (flag==true){}  //新手
             if (flag){}  //老手
             //Less is More!   代码要精简易读

     

  •  

三、类型转换

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

  •   ------------------------------------------> 
      byte,short,char-->int-->long-->float-->double
  • 内存溢出

             int i = 128;
             byte b = (byte)i;  //byte类型最大值为127,赋值为128导致内存溢出,不一定打印出多少
      //强制转换 (类型)变量名
             System.out.println(i);
             System.out.println(b);

    输出结果

     D:\developer_tools\Java\jdk1.8.0_161\bin\java.exe 
     128
     -128
     
  •  

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

  • 强制类型转换 (类型)变量名 高-->底

  • 自动类型转换 低-->高

    注意点:

    1. 不能对布尔值进行转换

    2. 不能把对象类型转化为不相干的类型

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

    4. 转换的时候可能存在内存溢出,或者精度问题!

             System.out.println((int)23.7);
             System.out.println((int)-45.89f);
     23
     -45
             System.out.println("=======================");
             char c = 'a';
             int d = c + 1;
             System.out.println(d);
             System.out.println((char)d);
     =======================
     98
     b
             //操作比较大的数的时候,注意溢出问题
             //JDK7新特性,数字之间可以用下划线分割
             int money = 10_0000_0000;
             int years = 20;
             int total = money*years;  //-1474836480,计算的时候溢出了
             System.out.println("===========================");
             System.out.println(total);
             long total2 = money*years;  //默认是int,转换之前已经存在问题了
             System.out.println(total2);
     
             long total3 = money*((long)years);  //先把一个数转换为long
             System.out.println(total3);
     ===========================
     -1474836480
     -1474836480
     20000000000

     

四、变量、常量

  • 变量是什么:就是可以变化的量!

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

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

         type varName [=value] [{,varName[=value]}];
      //数据类型 变量名 = 值;可以使用逗号隔开来声明多个同类型变量。
  • 注意事项:

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

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

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

  • 变量作用域:

    • 类变量

    • 实例变量

    • 局部变量

     public class Variable{
         static int allClicks=0;     //类变量,有static关键字
         String str="hello world";   //实例变量
         
         public void method(){
             int i = 0;  //局部变量
        }
     }
     public class Demo6 {
     
         //类变量 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 Demo6();
             Demo6 demo6 = new Demo6();
             System.out.println(demo6.age);
             System.out.println(demo6.name);
     
             System.out.println(salary);
     
        }
     
         //其他方法
     
         public void add() {
     
        }
     }
  • 常量

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

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

       final 常量名=值;
       final double PI=3.14
    • 常量名一般使用大写字符。

       //public static final这三个为修饰符,不存在先后顺序
       public static final double PI = 3.14;
       
       publci static void main(String[] args){
           System.out.println(PI);
       }
  • 变量的命名规范

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

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

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

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

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

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

    •  

 

五、运算符

java语言支持如下运算符:

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

  • 赋值运算符=

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

  • 逻辑运算符:&&, |, ^, ~, >>, <<, >>> (了解!!!)

  • 条件运算符 ? :

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

重点掌握前面四个,后面三个了解即可

 //二元运算符
         //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);
 30
 -10
 200
 0.5

 

         long a = 123123123123123L;
         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);      //int类型
 123123123123264
 141
 18

 

 //关系运算符返回的结果:正确,错误  布尔值
 
         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);
 1
 false
 true
 false
 true

 

 //++  --  自增,自减  一元运算符
         int a = 3;
 
         int b = a++; //执行完这行代码后,先给b赋值,再自增
         //a = a + 1;
         System.out.println(a);
         System.out.println(b);
 
         //a = a + 1;
         int c = ++a; //执行完这行代码前,先自增,再给c赋值
         System.out.println(a);
         System.out.println(c);
 
         //幂运算 2^3   2*2*2 = 8 在Java中没有幂运算符,需要通过Math来实现
         //很多运算,我们会使用一些工具类来操作!
         double pow = Math.pow(2,3);
         System.out.println(pow);
 4
 3
 5
 5
 8.0

 //逻辑运算符
         //与(and)   或(or)   非(取反)
         boolean a = true;
         boolean b = false;
         System.out.println("a && b:"+(a&&b));  //逻辑与运算:两个变量都为真,结果为true
         System.out.println("a || b:"+(a||b));  //逻辑或运算:两个变量有一个为真,则结果为true
         System.out.println("!(a && b):"+!(a&&b)); //如果是真,则变为假,如果是假则变为真
 
         //短路运算   对于&&运算,当第一个条件为false,则不会再执行第二个条件
         int c = 5;
         boolean d = (c<4)&&(c++<4);
         System.out.println(d);
         System.out.println(c);
 a && b:false
 a || b:true
 !(a && b):true
 false
 5

 //位运算
         /*
         A = 0011 1100
         B = 0000 1101
         -----------------------
         A&B = 0000 1100
         A|B = 0011 1101
         A^B = 0011 0001
         ~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 1000   8
         0001 0000   16
         */
 
         System.out.println(2<<3); //2*2*2*2
         System.out.println(3<<3); //3*2*2*2
         System.out.println(4<<3); //4*2*2*2
 16
 24
 32

 

 //扩展运算符
         int a = 10;
         int b = 20;
 
         a+=b;  //a = a+b
         a-=b;  //a = a-b
 
         System.out.println(a);
 10

         //字符串连接符 + ,String
         System.out.println(a+b);
         System.out.println(""+a+b);
         System.out.println(a+b+"");
 30
 1020
 30

 //三元运算符
         //x ? y : z
         //如果x==true, 则结果为y, 否则结果为z
 
         int score = 80;
         String type = score < 60 ? "不及格" : "及格";
         System.out.println(type);
 及格

 

六、包机制、JavaDoc

包机制

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

  • 包语句的语法格式为:

 package pkg1[.pkg2[.pkg3...]];
  • 一般利用公司域名倒置作为包名; 比如 com.tyro.www com.wang.xxx

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

 import package[.package2...].(classname|*);
 
 import com.kuang.base.*;  //导入这个包下所有的类!

 

JavaDoc

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

  • 参数信息

    • @author作者名

    • @version版本号

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

    • @param参数名

    • @return返回值情况

    • @throws异常抛出情况

 package com.tyro.base;
 
 /**
  * @author tyro
  * @version 1.0
  * @since 1.8
  * */
 
 public class Doc {
 
    String name;
 
    /**
      * @author tyro
      * @param name
      * @return
      * @throws Exception
      * */
 
    public String test(String name) throws Exception{
        return name;
    }
 }
 
 在cmd窗体中,通过指令实现:javadoc -encoding UTF-8 -charset UTF-8 Doc.java;
     
 在IDEA中也可以生成;

 

 

 

posted on 2021-10-27 17:30  tyro_wang  阅读(140)  评论(0)    收藏  举报