向狂神学Java:基础语法

Java基础语法(Day02~03)

标识符和关键字

  • 比C多一个$可以用
  • 大小写敏感
  • 不可以用一下关键字

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

数据类型讲解

基本类型

  • 整形多出个byte:-128-127,int是21亿
  • long类型量后面要加L,float类型量后面要加F
  • String是个类不是关键词,Interger和Byte也是封装类

引用类型

  • 类:String
  • 接口
  • 数组

字节

  • 1bit=1位

  • 1B(byte)=8位(b)

  • 1024B=1KB

  • 电脑的32位和64位的区别是?

    1. 寻址能力
    2. 内存32位max:4GB,64位max:几乎无限大

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

  • 整数扩展

    1. 二进制0b
    2. 八进制0
    3. 十六进制0x
  • 浮点数扩展

    1. 浮点数:因为有限、离散、舍入误差、接近但不等于,所以不能用于银行业务
    2. 最好完全避免用浮点数进行比较
  • 字符扩展

    1. 所有字符char都可以强制转换成int整型
    2. 可用编码Unicode表:
    //所有字符本质还是数字
    //U0000 UFFFF
    char c='\u0061';
    System.out.println(c);//a
    
    1. 转义字符:
    转义字符 意义 ASCII码值(十进制)
    \a 响铃(BEL) 007
    \b 退格(BS) ,将当前位置移到前一列 008
    \f 换页(FF),将当前位置移到下页开头 012
    \n 换行(LF) ,将当前位置移到下一行开头 010
    \r 回车(CR) ,将当前位置移到本行开头 013
    \t 水平制表(HT) (跳到下一个TAB位置) 009
    \v 垂直制表(VT) 011
    \0 空字符(NUL) 000
    \ddd 1到3位八进制数所代表的任意字符 三位八进制
    \xhh 十六进制所代表的任意字符 十六进制

    注意:\xhh 十六进制转义不限制字符个数 '\x000000000000F' == '\xF'* [3]

public class Demo1 {
    public static void main(String[] args) {
        int i = 10;
        int i2 = 010;
        int i3 = 0x10;
        System.out.println(i);
        System.out.println(i2);
        System.out.println(i3);
        System.out.println("=====================================");
        //===========================================================
        float a = 0.1F;
        double b = 1.0 / 10;
        System.out.println(a == b);
        float d1 = 213213213213213f;
        double d2 = d1 + 1;
        System.out.println(d1 == d2);
        System.out.println("=====================================");
        //===========================================================
        char c1 = 'a';
        char c2 = '中';
        char c3 = '国';
        System.out.println((int) c1);
        System.out.println((int) c2);
        System.out.println((int) c3);
        char c4 = '\u9999';
        System.out.println(c4);
        char c5 = '\u0001';
        System.out.println(c5);
        //===========================================================
        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){}

    }
}

类型转换

  • 低转高:byte,short,char --> int --> long --> float --> double

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

  • 注意点

    1. 不能对boolean类型进行转换

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

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

    4. 除了转换基本类型,引用类型类的类也可以转换。

public class Demo2 {
    public static void main(String[] args) {
        int a = 128;
        byte b = (byte) a;
        System.out.println(b);
        int c = 128;
        double d =  c;
        System.out.println(d);
        System.out.println("==========================");
        System.out.println((int)23.7);
        System.out.println((int)45.89F);
        System.out.println("==========================");
        char q = 'a';
        int w = q + 1;
        System.out.println(w);
        System.out.println((char)w);




        System.out.println("==========================");
        int i = 10_0000_0000;
        int x = 20;
        long tota1 = i * x;
        System.out.println(i * x);
        System.out.println(i * (long) x);
        System.out.println(tota1);
        System.out.println("==========================");

    }
}

变量

  • 定义多个变量不要写在同一行,提高代码可读性。

  • 变量作用域

    1. 类变量:写在类和方法的中间,加static
    2. 实例变量:写在类和方法的中间,从属于对象
    3. 局部变量:写在方法里,只在该方法有效果
    public class Demo3 {
        //类变量   static
        static final double salary = 2500;
    
        //属性:变量
    
        //实例变量:从属于对象;如果不自行初始化,这个类型的默认值有     0   0.0
        //布尔值:默认是false
        //除了基本类型,其余的默认值都是null,char也默认null
        String name;
        int age;
    
        //main方法
        public static void main(String[] args) {
    
            //局部变量:必须声明和初始化值
            int i = 10;
            System.out.println(i);
    
            //变量类型  变量名 = new Demo3();
            Demo3 demo3 = new Demo3();
            System.out.println(demo3.age);
            System.out.println(demo3.name);
    
            //类变量   static
            System.out.println(salary);
    
        }
    
    
        //其他方法
        public void add(){
            System.out.println(i);
        }
    }
    
    

常量

final 常量名=值;
//常量名全用大写字符,太长可用下划线分割
//修饰符无先后顺序:可以放static前面,也可以后面

命名规则

  • 所有变量、方法、类名:简明知意,不用拼音
  • 类成员变量:首字母小写和驼峰原则:monthSalary
  • 局部变量:首字母小写和驼峰原则
  • 常量:大写字母和下划线:MAX_VALUE
  • 类名:首字母大写和驼峰原则:Man,GoodMan
  • 方法名:首字母小写和驼峰原则:run(),runRun()

运算符

  • 关系里多了个instanceof

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

  • 位运算:&,|,……,~,>>,<<,>>>(了解即可!!!)

  • 条件运算符?:

  • 注意:

    1. %取余也叫模运算

    2. ++,--,自增,自减,一元运算符(一个量就可以进行运算)

    3. 字符串连接符:+遇到String就都会转成String

    4. 优先级

      单目乘除为关系,逻辑三目后赋值。

      单目:单目运算符+ –(负数) ++ -- 等
      乘除:算数单目运算符* / % + -
      为:位移单目运算符<< >>
      关系:关系单目运算符> < >= <= == !=
      逻辑:逻辑单目运算符&& || & | ^
      三目:三目单目运算符A > B ? X : Y
      后:无意义,仅仅为了凑字数
      赋值:赋值=

优先级 运算符 结合性
1 ()、[]、{} 从左向右
2 !、+、-、~、++、-- 从右向左
3 *、/、% 从左向右
4 +、- 从左向右
5 «、»、>>> 从左向右
6 <、<=、>、>=、instanceof 从左向右
7 ==、!= 从左向右
8 & 从左向右
9 ^ 从左向右
10 | 从左向右
11 && 从左向右
12 || 从左向右
13 ?: 从右向左
14 =、+=、-=、*=、/=、&=、|=、^=、~=、«=、»=、>>>= 从右向左
public class Demo4 {
    public static void main(String[] args) {
        // 与(and)   或(or)   非(取反)
        boolean a = true;
        boolean b = false;

        System.out.println("a&&b:" + (b && a));//逻辑与运算:两个变量都为真,结果才为true
        System.out.println("a||b:" + (a || b));//逻辑或运算:两个变量有一个为真,则结果才为true
        System.out.println("!(a&&b):" + !(a && b));//如果是真,则变为假,如果是假则变为真

        //短路运算
        int c = 5;
        boolean d = (c<4)&&(c++<4);
        System.out.println(d);
        System.out.println(c);

        /*
        位运算
        A = 0011 1100
        B = 0000 1101
        --------------------
        A&B = 0000 1100
        A|B = 0011 1101
        A^B = 0011 0001
        ~B = 1111 0010
         */

        //面试题:2*8怎么运算最快?
        /*
        效率极高!!!
        <<  *2
        >>  /2

        0000 0000       0
        0000 0001       1
        0000 0010       2
        0000 0011       3
        0000 0100       4
        0000 1000       8
        0001 0000       16
         */
         
         //字符串连接符    +   ,String
        int e = 10;
        int f = 20;
        System.out.println(""+e+f);
        System.out.println(e+f+"");
    }
}

包机制

  • 一般利用公司域名倒置作为包名
  • 调用另一个包的东西用"import"语句,类名用*代表导入包中所有类
  • 问老师为什么不能移动Demo3到新包里

学规范看《阿里巴巴Java开发手册》

JavaDoc

参数信息

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

命令行生成JavaDoc文档

C:\Users\36068\Desktop\Java\untitled\src\com\kuang\base>javadoc -encoding UTF-8 -charset UTF-8 Doc.java

IDEA生成JavaDoc文档(转自IDEA如何生成JavaDoc文档 - 七秒的回忆 - 博客园 (cnblogs.com)

1. 准备要生成JavaDoc文档的类

package com.kuang.base.test1;

import java.io.FileInputStream;
import java.io.FileNotFoundException;

public class TestGenerateDoc {
    private  Integer id;
    private  String message;

    /**
     * 发送消息的方法
     * @param id 接收信息人唯一标识
     * @param fileName 文件名称
     * @return sendOK 返回是否成功
     * @throws FileNotFoundException 可能出现文件不存在的异常
     */
    public Boolean sendMessage(Integer id,String fileName) throws FileNotFoundException{
        boolean sendOK = false;
        FileInputStream inputStream = new FileInputStream(fileName);
        String message = inputStream.toString();
        if (message != null){
            System.out.println("I will send message to" + id + "and the message content is" + message);
            sendOK = true;
        }
        return sendOK;
    }

}

2. tools---->GenerateJavaDoc---->可以看到如下界面:

  • Generate JavaDoc scop:选择你也需要生成JavaDoc文档内容,我这里只需要将TestGenerateDoc.java这个类生成文档.

  • output directory:生成的javaDoc文档会存放在哪里.

  • Locale:zh_CN

  • Other command line arguments:

    ​ -encoding UTF-8 -charset UTF-8 -author -version -windowtitle "TestGenerateDocV1.0"

    ​ 注意参数里面的TestGenerateDocV.0就是你生成的JavaDoc存放的指定目录

图片1

3. 点击OK便可以生成JavaDoc文档

posted @ 2021-10-14 19:48  Ayu的编程日常  阅读(50)  评论(0)    收藏  举报