0
点赞
收藏
分享

微信扫一扫

Java基础用法(跟狂神学习笔记)

山竹山竹px 2022-04-24 阅读 58
java

Java基础语法

零、运行前准备

  1. 新建Project:File-》New-》Project-》Empty Project-》……

  2. 新建Module:File-》New-》Module-》Java-》……

  3. File-》Project Structure-》Project,选择相对应的SDK和Language level(这里我使用的版本是1.8和8)

一、注释

​ 注释相当于对代码进行解释的笔记。当项目结构变得复杂时,注释就变得非常必要。在写代码的同时书写注释,是一个非常好的习惯,以便日后再看代码的时候能迅速理解代码的内容,同时也方便他人看懂你写的代码。注释并不会被执行,是写给人看的。

Java中的注释有三种:

  • 单行注释
  • 多行注释
  • 文档注释

示例如下:

public class HelloWorld {
    public static void main(String[] args) {
        //什么是单行注释? Line Comment
        //它的开头是两个斜杠
        //这就是单行注释
        /*什么是多行注释?Block Comment
         它的开头是斜杠和一颗星;
         它可以注释一段文字;
         这就是多行注释!*/
        /** 什么是文档注释?
         * 它的开头是斜杠和两颗*
         * 它的每一段前面都有*
         * @Description 这就是有功能的,可以被识别;和JavaDoc联合使用
         * @Author WANGqiuwai
         这就是文档注释!*/
        System.out.println("Hello,World!");
    }
}

其他:

1. 给注释改颜色

File-》Settings-》Editor-》Color Scheme-》Java-》Comments-》Line Comment-》Foreground

2. 搜索“有趣的代码注释”


二、标识符、关键字

标识符

类名、变量名、方法名都被称为标识符

命名规则:

  • 所有标识符都应该以字母(AZ,az)、美元符号($)或下划线(_)开始
  • 首字符之后可以是字母(AZ,az)、美元符号($)、下划线(_)或数字(0~9)的任何字符组合
  • 不能使用关键字作为标识符
  • 标识符是大小写敏感的
  • 可以使用中文命名,但不建议,也不建议使用拼音命名;尽量做到“见名知意”

关键字

abstractassertbooleanbreakbyte
casecatchcharclassconst
continuedefaultdodoubleelse
enumextendsfinalfinallyfloat
forgotoifimplementsimport
instanceofintinterfacelongnative
newpackageprivateprotectedpublic
returnstrictfpshortstaticsuper
switchsynchronizedthisthrowthrows
transienttryvoidvolatilewhile

示例如下:

//练习使用标识符:
public class Demo01 {
    public static void main(String[] args) {
        //合法用法:
        String Ahello = "xiaowang";
        String hello = "xiaowang";
        String $hello122_ = "xiaowang";
        String _hell$_o = "xiaowang";
        //非法用法:
        /*String 1hello = "xiaowang";
        String #hello = "xiaowang";
        String hell%^o = "xiaowang";
        String class = "xiaowang";*/
        //大小写敏感:
        String Class = "xiaowang";
        String Man = "xiaowang";
        String man = "xiaowang";
        //可以使用中文命名:
        String 王者荣耀 = "最强王者";
        System.out.println(王者荣耀);
    }
}

三、数据类型

  • 强类型(定义)语言,如:Java

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

  • 弱类型语言,如:JavaScript

Tips:

  1. Java是一种强类型语言,每个变量都必须声明其类型;
  2. 变量声明是一条完整的语句,因此每一个声明都必须以分号结束;
  3. Java变量是程序中最基本的存储单元,其要素包括变量名、变量类型和作用域

Java的数据类型

1. 基本类型(Primitive Type)

- 数值类型
  • 整数类型

    • byte:占1个字节范围

    • short:占2个字节范围

    • int:占4个字节范围

    • long:占8个字节范围;long类型要在数字后面加个L

  • 浮点类型

    • float:占4个字节;float类型要在数字后面加个F
    • double:占8个字节;默认
  • 字符类型

    • char:占2个字节
- 布尔类型
  • boolean:占1位,其值只有true和false两个

2. 引用类型(Reference Type)

- 类
- 接口
- 数组

示例如下:

//认识Java的数据类型:八大基本数据类型
public class Demo02 {
    public static void main(String[] args) {
        //整数类型:
        int num1 = 10;  //最常用
        byte num2 = 20;
        short num3 = 30;
        long num4 = 40L;  //大小写都可以,但为了代码直观性,最好使用大写L
        //小数(浮点数):
        float num5 = 50.1F;
        double num6 = 3.1415926535897932384626433;

        /*可以通过数据类型对应的类去查看该数据类型所能表示的范围
        Integer
        Byte
        Short
        Long
        Float
        Double
         */

        //字符类型:
        char name1 = 'W';
        //字符串(非基本数据类型,而是引用类型):
        String name2 = "WANGqiuwai";  //String不是关键字,是一个类

        //布尔类型:
        boolean flag1 = true;  //是
        boolean flag2 = false;  //非
    }
}

拓展

1. 整数拓展之进制

  • 二进制:以0b开头,每位表示0~1
  • 十进制:每位表示0~9
  • 八进制:以0开头,每位表示0~7
  • 十六进制:以0x开头,每位表示0~9 A~F
//整数拓展:进制
public class Demo03 {
    public static void main(String[] args) {
        int i1 = 0b10;  //二进制:0b
        int i2 = 10;  //十进制
        int i3 = 010;  //八进制:0
        int i4 = 0x10;  //十六进制:0x
        System.out.println(i1);  //2
        System.out.println(i2);  //10
        System.out.println(i3);  //8
        System.out.println(i4);  //16
    }
}

2. 浮点数拓展

  • float能表现的字长是有限的、离散的;由于舍入误差,float型数据是“大约”数(接近但不等于)
  • 最好完全避免使用浮点数进行比较
  • 若要将浮点数进行比较,可以使用数学工具类BigDecimal(大数类)
//浮点数拓展
public class Demo03 {
    public static void main(String[] args) {
        float f = 0.1f;
        double d = 1.0 / 10;
        System.out.println(f);  //0.1
        System.out.println(d);  //0.1
        System.out.println(f == d);  //false

        float f1 = 23232323231232132f;
        float f2 = f1 + 1;
        System.out.println(f1);  //2.32323242E16
        System.out.println(f2);  //2.32323242E16
        System.out.println(f1 == f2);  //true
    }
}

3. 字符拓展

  • char型可以强制类型转换成int型
  • 所有的字符本质上还是数字
  • char型涉及到编码问题,即Unicode(可以处理各种语言的文字);占2个字节(每一位在Unicode表上对应一个字符),最多可以表示2^16=65536个字符(065535,也即u0000uFFFF)
  • 早期的Excel最长只有2^16=65536行
//字符拓展
public class Demo03 {
    public static void main(String[] args) {
        char c1 = 'w';
        char c2 = '王';
        System.out.println(c1);  //w
        System.out.println(c2);  //王
        
        //强制类型转换
        System.out.println((int) c1);  //119
        System.out.println((int) c2);  //29579
        
        //Unicode编码
        char c3 = '\u0077';  //w的编码为119,其十六进制为77
        System.out.println(c3);  //w
        
        //转义字符
        System.out.println("Hello\tWorld\n");  //\t表示制表符;\n表示换行符
    }
}

4. 布尔值拓展

  • Less is More! 代码要精简易读
//布尔值拓展
public class Demo03 {
    public static void main(String[] args) {
        boolean flag = true;
        if (flag == true) { }
        //改进后:
        if (flag) { }
    }
}

5. 其他拓展

//其他拓展
public class Demo03 {
    public static void main(String[] args) {
        //new一个对象,从内存分析:比较的是地址
        String s1 = new String("hello world");
        String s2 = new String("hello world");
        System.out.println(s1 == s2);  //false
        //比较的是字符串常量
        String s3 = "hello world";
        String s4 = "hello world";
        System.out.println(s3 == s4);  //true
    }
}

四、类型转换

  • 由于Java是强类型语言,要进行某些运算时,需要用到类型转换

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

    • ---------------------------------------------------------------------->从低到高---------------------------------------------------------------------->
    byte,short,charintlongfloatdouble
    • 小数优先级大于整数

强制类型转换

需要强制类型转换,表示为:(需要转换成的类型)变量名

自动类型转换

进行自动类型转换

示例如下:

//强制、自动类型转换
public class Demo04 {
  public static void main(String[] args) {
      int i = 128;
      System.out.println(i);  //128
      //自动转换
      double a = i;
      System.out.println(a);  //128.0
      //强制转换:(类型)变量名
      //内存溢出
      byte b = (byte)i;  //byte最大只能表示127
      System.out.println(b);  //-128
      //精度丢失
      System.out.println((int)23.7);  //23
      System.out.println((int)-45.89f);  //-45

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

注意:

1. 不能对布尔值进行转换;
2. 不能把对象类型转换为不相干的类型;
3. 从高到低必须强制转换;
4. 转换的时候可能存在内存溢出,或者精度问题
//操作比较大的数的时候,注意溢出问题
public class Demo05 {
    public static void main(String[] args) {
        //JDK7新特性:数字之间可以用下划线分割
        int money = 10_0000_0000;
        System.out.println(money);  //1000000000
        int years = 20;
        int total1 = money * years;
        System.out.println(total1);  //-1474836480,计算的时候溢出了
        long total2 = money * years;
        System.out.println(total2);  //-1474836480
        //money * years计算完是int型
        long total3 = money * (long)years;
        System.out.println(total3);  //20000000000
    }
}

五、变量、常量

变量

变量就是可以变化的量,代表一个空间(比如一个“鞋盒”)

相关概念:

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

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

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

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

  • 数据类型 变量名 =1,2;  //可以使用逗号隔开来声明多个同类型的变量,但不建议
    

示例如下:

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

变量作用域

1. 类变量
  • 在类中使用(方法外面,类里面);
  • 从属于该类;
  • 开头要加上static
2. 实例变量
  • 在类中使用(方法外面,类里面);

  • 从属于对象:变量类型 变量名 = new 变量类型(); 即“new一个对象”,相当于拿到自己

  • 可以不进行初始化,就是默认值

    数据类型默认值
    Stringnull(除了基本类型,其余的默认值都是null)
    byte0
    int0
    short0
    long0
    float0.0
    double0.0
    charu0000 (啥也不显示)
    booleanfalse
3. 局部变量
  • 在方法中使用;
  • 使用之前必须声明和初始化值
4. 示例如下:
//认识变量作用域
public class Demo07 {
    //类里面还能定义一些属性,如变量
    //代码块
    static{
        //使用static关键字,作用域就非常高了
    }

    //实例变量
    String name;
    int age;

    //类变量
    static double salary = 2500;  //(自动类型转换)

    //主程序方法(main方法)
    public static void main(String[] args) {
        //局部变量
        int i = 10;
        System.out.println(i);

        //实例变量
        Demo07 demo07 = new Demo07();
        System.out.println(demo07.name);  //null
        System.out.println(demo07.age);  //0

        //类变量
        System.out.println(salary);  //2500.0
    }

    //其他方法
    public void add(){

    }
}

常量

初始化之后不再变动的值。可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变

相关概念:

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

  • final 常量名 =;
    

示例如下:

//练习使用常量
public class Demo08 {
    //在变量类型前的修饰符们不存在先后顺序
    static final double PI = 3.14;
    final static double PAI = 3.1415;
    public static void main(String[] args) {
        System.out.println(PI);
        System.out.println(PAI);
    }
}

命名规范

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

  • 类成员变量、局部变量:首字母小写和驼峰原则,如monthSalary

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

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

  • 常量:大写字母和下划线,如MAX_SIZE


六、运算符

Java支持如下运算符(括号的优先级最高,多使用):

运算符类型运算符
算术运算符+-/%++*
赋值运算符=
关系运算符><>=<===!=instanceof
逻辑运算符&&||!
位运算符&(与)、|(或)、^(异或)、~(非)、>>(右移)、<<(左移)、>>>
条件运算符? :
扩展赋值运算符+=-==/=*

1. 算术运算符

  • 加、减、乘、除、取模
//练习使用算术运算符01
public class Demo09 {
    public static void main(String[] args) {
        //二元运算符
        int a = 10;  //IDEA快捷键:Ctrl+D复制当前行到下一行
        int b = 20;
        int c = 21;

        System.out.println(a+b);  //30
        System.out.println(a-b);  //-10
        System.out.println(a*b);  //200
        System.out.println(a/b);  //0
        System.out.println(a/(double)b);  //0.5
        System.out.println(c%a);  //1
    }
}
//练习使用算术运算符02
public class Demo10 {
    public static void main(String[] args) {
        long a = 123123123123123L;
        int b = 123;
        short c = 10;
        byte d = 8;
        //如果(全为整数类型的)表达式中有long型,则结果为long型;否则,都为int型
        System.out.println(a+b+c+d);  //long
        System.out.println(b+c+d);  //int
        System.out.println(c+d);  //int
        //如果(全为浮点类型的)表达式中有double型,则结果为double型
        double e = 43.1552354;
        float f = 0.126f;
        System.out.println(e+f);  //double
        System.out.println(f);  //float
    }
}
  • 自增、自减
//练习使用算术运算符03
public class Demo11 {
    public static void main(String[] args) {
        //一元(单目)运算符
        int a = 3;
        int b = a++;  //先b=a再a++:b=3,a=4
        int c = ++a;  //先++a再c=a:a=5,c=5
        System.out.println(a);  //5
        System.out.println(b);  //3
        System.out.println(c);  //5
    }
}
  • 幂运算

    很多运算我们会使用一些工具类来做,以幂运算为例:

//练习使用幂运算
public class Demo12 {
    public static void main(String[] args) {
        //使用数学工具类Math,计算2^3=8
        double pow = Math.pow(2, 3);  //IDEA快捷键:Alt+Enter返回值
        System.out.println(pow);  //8.0
    }
}

2. 关系运算符

  • 关系运算符返回的结果:正确/错误,用布尔值表示(常与if使用)
//练习使用关系运算符
public class Demo13 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println(a>b);  //flase
        System.out.println(a<b);  //true
        System.out.println(a==b);  //false
        System.out.println(a!=b);  //true
    }
}

3. 逻辑运算符

  • &&:两个变量都为真才为真
  • ||:两个变量都为假才为假
  • !:真变假,假变真(取反)
//练习使用逻辑运算符
public class Demo14 {
    public static void main(String[] args) {
        boolean a = true;
        boolean b = false;

        System.out.println(a&&b);  //flase
        System.out.println(a||b);  //true
        System.out.println(!(a&&b));  //true

        //短路运算
        /*
        a&&b:若a为假,则直接判断表达式为假,不用判断b了
        a||b:若a为真,则直接判断表达式为真,不用判断b了
         */
        int c = 5;
        boolean d = (c < 4) && (c++ < 4);
        System.out.println(d);  //false
        System.out.println(c);  //5
    }
}

4. 位运算符

//练习使用位运算符
public class Demo15 {
    public static void main(String[] args) {
        /*
          A = 0011 1100
          B = 0000 1101
        ----------------
        A&B = 0000 1100
        A|B = 0011 1101
        A^B = 0011 0001  对应位相同为0,不同为1
        ~B  = 1111 0010
        */

        /* 面试题:-2*8怎么运算最快?-把2*8拆分成2*2*2*2,用位运算(效率极高)
        <<就是*2
        >>就是/2
        --------------
        0000 0000    0
        0000 0001    1
        0000 0010    2
        0000 0011    3
        0000 0100    4  把2左移一位变成4
        ……
        0000 1000    8  把2左移两位变成8
        ……
        0001 0000    16 把2左移三位变成16
        */
        System.out.println(2<<3);  //16,把2左移3位
    }
}

5. 条件运算符

  • x ? y : z 意味着:如果x==true,结果为y;否则,结果为z
//练习使用条件运算符
public class Demo16 {
    public static void main(String[] args) {
        //三元运算符
        int score = 80;
        String result = score < 60 ? "不及格" : "及格";
        System.out.println(result);  //及格
    }
}

6. 扩展赋值运算符

//扩展赋值运算符
public class Demo17 {
    public static void main(String[] args) {
        int a1 = 10;
        int a2 = 10;
        int b1 = 20;
        int b2 = 20;

        a1 += b1;
        System.out.println(a1);  //30
        a2 -= b2;
        System.out.println(a2);  //-10
    }
}

7. 扩展字符串连接符

//扩展字符串连接符
public class Demo18 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println(a+b);  //30
        System.out.println("a+b="+(a+b));  //a+b=30
        //在 + 两侧只要前方出现String类型,就会把后面一个操作数(及剩下操作数)都转换成String再进行连接
        System.out.println("a+b="+a+b);  //a+b=1020
        System.out.println(""+a+b);  //1020
        System.out.println(a+b+"");  //30
    }
}

七、包机制、JavaDoc

包机制

  • 为了更好地组织类,Java提供了包机制,用于区别类名的命名空间(包的本质就是相当于“文件夹”)

  • 一般利用公司域名倒置作为包名

  • //包语句的语法格式为(必须放在最上面):
    package pkg1[.pkg2[.pkg3...]];
    
  • 为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包(使用import语句)

    //*(通配符)会将该包下的所有东西都导入
    import package1[.package2[.package3...]].(classname|*);
    

JavaDoc

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

  • 参数信息

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

示例如下:

//类(给类加文档注释):
/**
 * @author WANGqiuwai
 * @version 1.0
 * @since 1.8
 */
public class Doc {
    //属性:
    String name;

    //方法(给方法加文档注释):
    /**
     * @author WANGqiuwai
     * @param name
     * @return
     * @throws Exception
     */
    public String test(String name) throws Exception{
        return name;
    }
}

如何生成JavaDoc文档?

  1. 通过命令行生成:

    右键该类-》Show in Explorer-》找到该类的包路径-》在资源管理器的开头输入cmd 打开Dos窗口-》输入命令javadoc Doc.java,回车-》文档生成,可在文件夹中查看-》点击index.html可查看

    若要解决中文显示的乱码问题,在输入命令中可以加上一些参数-encoding UTF-8 -charset UTF-8,使文档更美观,即完整输入:

    C:\Users\WANGqiuwai\Desktop\JavaSE\Java基础语法\src\com\wangqiuwai\base>javadoc -encoding UTF-8 -charset UTF-8 Doc.java
    
  2. 使用IDEA生成IavaDoc文档

搜索“jdk帮助文档”查看API帮助文档

搜索“阿里巴巴开发手册”进行学习

举报

相关推荐

0 条评论