JavaStudy05 java基础语法

Java基础语法

注释

注释不会被执行,,是给写代码的人看的

  1. 单行注释
  2. 多行注释
  3. 文档注释
public class HelloWorld {
    public static void main(String[] args) {
        //单行注释
        //输出一个Hello,World!
        System.out.println("HelloWorld!");
        //多行注释:可以注释一段文字 /* 注释 */
        /*
        我是注释
        我是注释
        我是注释
        我是注释
        */

        //javadoc:文档注释  /**    */
        /**
         * @Description HelloWorld
         * @Author 云杰
         */
    }
}

标识符

关键字

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

abstract assert boolean braek byte
case catch char class const
continue default do double else
enum extends final finally float
for goto if implements import
instanceof int interface long native
new package private protected public
return strictfp short static super
switch synchronized this throw throws
transient try void volatile while

标识符注意点

  1. 所有的标识符都应该以字母(A-Z 或 a-z),美元符($),下划线开始(_)
  2. 首字母之后可以是字母、美元符、下划线、数字的任何字符组合
  3. 不能使用关键字作为变量名或方法名
  4. 标识符是大小写敏感的
  5. 可以使用中文,但不建议

数据类型

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

基本数据类型(primitive type)

数值类型

整数类型
  1. byte(1个字节):-128~127
  2. short(2个字节):-32768~32767
  3. int(4):-2147483648~2147483647
  4. long(8):-922372036854775808~92237036854775807
long num1 = 20L;//Long类型要在数字后加L
浮点类型
  1. float(4)
float num2 = 1.1F;//Float类型要在数字后加F
  1. double(8)
字符类型

char(2个字节)

char name1 = '中';
String name2 = "中国";//String不是关键字,是类

boolean类型

占1位,值为true or false

boolean flag1 = true;
boolean flag2 = false;

引用数据类型(reference type)

接口

数组

字节

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

数据类型扩展

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

        int i1 = 10;
        int i2 = 010;//八进制0
        int i3 = 0x10;//十六进制0x

        System.out.println(i1);
        System.out.println(i2);
        System.out.println(i3);
        System.out.println("========================================");
        //============================================================
        // 浮点数拓展: 银行业务如何表示? 钱
        //BigDecimal 数学工具类
        //========================================================
        //float 有限 离散 舍入误差 大约 接近但不等于
        //double
        //最好完全避免使用浮点数进行比较
        //最好完全避免使用浮点数进行比较
        //最好完全避免使用浮点数进行比较

        float f1 = 0.1f;//0.1
        double f2 = 1.0 / 10;//0.1

        System.out.println(f1 == f2);//false

        float d1 = 217486918686f;
        float d2 = d1 + 1;

        System.out.println(d1 == d2);//true

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

        System.out.println(c1);

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

        System.out.println(c2);

        System.out.println((int)c2);//强制类型转换

        //所有的字符本质还是数字
        //Unicode编码 2字节 65536
        //97 = a
        //65 = A

        char c3 = '\u0061';

        System.out.println(c3);//a

        //转义字符
        //\t 制表符
        //\n 换行
        //。。。。。。

        System.out.println("Hello\nworld");

        System.out.println("Hello\tworld");
        
    }
}

https://note.youdao.com/yws/public/resource/a5a3fd9a1abedb981c957ec8a5659b7a/xmlnote/04CD07DE7ECF4BA68408EBDA7FB52237/71

https://note.youdao.com/yws/public/resource/a5a3fd9a1abedb981c957ec8a5659b7a/xmlnote/A136E36F3A7840148DAA49DB59E84A67/73

类型转换

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

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

byte,short,char --> int --> long --> float --> double*

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

public class demo02 {
    public static void main(String[] args) {
        int i = 128;
        byte j = (byte)i;//内存溢出

        //强制转换  (类型)变量名 高-->低
        //自动转换               低-->高

        float k = (float)i;//自动转换
        System.out.println(i);
        System.out.println(j);
        System.out.println(k);

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

        System.out.println("========================");

        System.out.println((int)23.6);//23
        System.out.println((int)-45.79f);//-45

        System.out.println("========================");

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

https://note.youdao.com/yws/public/resource/a5a3fd9a1abedb981c957ec8a5659b7a/xmlnote/897ECF6E92DA41F8918737CEEAAC76DD/75

public class demo03 {
    public static void main(String[] args) {
        //操作较大的数时,注意溢出问题
        //JDK新特性,数字之间可以使用下划线分割
        int money = 10_0000_0000;
        int year = 20;
        int total1 = money*year;//-1474836480 , 计算时溢出了
        long total2 = money*year;//默认是int , 转换之前计算时已出问题
        long total3 = money*((long)year);//先把一个数转换为Long

        System.out.println(total1);
        System.out.println(total2);
        System.out.println(total3);

        //Long的1000000L尽量使用大写L , 小写l易看成1
    }
}

https://note.youdao.com/yws/public/resource/a5a3fd9a1abedb981c957ec8a5659b7a/xmlnote/A228BDFEBCDD46BA96484F921CAA2E83/77

变量、常量、作用域

变量

变量:可以变化的量

Java是强类型语言,每个变量使用前必须声明其类型

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

注意事项:

  1. 每个变量都有类型,类型可以是基本类型,也可是引用类型
  2. 变量名必须是合法标识符
  3. 变量声明是一条完整的语句,因此每个声明必须以分号结束
public class demo4 {
    public static void main(String[] args) {
        //int a,b,c;
        //int a=1,b=1,c=3; //程序可读性差
        int a = 1;
        int b = 2;
        int c = 3;
        String name = "johnny";
        char x = 'X';
        double pi = 3.14;
    }
}
public class demo5 {
    //类变量 sstatic
    static double salary = 2500;

    //属性:变量

    //实例变量:从属于对象
    //如果不进行初始化,这个类型默认值 0  0.0  false(boolean)
    //除了基本类型,其余默认值为 null
    String name;
    int age;

    //main方法
    public static void main(String[] args) {

        //局部变量; 必须声明和初始化值
        int i = 10;
        System.out.println(i);

        //变量类型 变量名字 = new demo5();
        demo5 A = new demo5();
        System.out.println(A.age);
        System.out.println(A.name);
    }
}

变量命名规范

  1. 所有变量、方法、类名:见名知意
  2. 类成员变量:首字母小写和驼峰原则 monthSalary、lastName
  3. 局部变量:首字母小写和驼峰原则
  4. 常量:大写字母和下划线 MAX_VALUE
  5. 类名:**首字母 大 ** 写和驼峰原则 Man 、GoodMan
  6. 方法名:首字母小写和驼峰原则

作用域

  • 类变量
  • 实例变量
  • 局部变量
public class Variable{
    static int allClicks = 0;//类变量
    String str = "Hello World";//实例变量
    
    public void method(){
        int i = 0;//局部变量
    }
}

常量

常量:初始化后不能再改变值,特定的变量,程序运行中值不允许改变

常量名一般使用大写字母

public class demo06 {
    //修饰符不存在先后顺序
    static final double PI = 3.14;

    public static void main(String[] args) {
        System.out.println(PI);
    }
}

运算符

算数运算符

+、-、*、/、%、++、--

package operator;

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/b);//0
        System.out.println(a/(double)b);//0.5
    }
}
package operator;

public class Demo02 {
    public static void main(String[] args) {
        long a = 123412341234L;
        int b = 1234;
        short c = 10;
        byte d = 6;

        System.out.println(a+b+c+d);//Long
        System.out.println(b+c+d);//Int
        System.out.println(c+d);//Int
    }
}
package operator;

public class Demo04 {
    public static void main(String[] args) {
        //++  --   自增,自减   一元运算符
        int a = 3;
        int b = a++;//执行完这行代码后,先给b赋值,再自增
        //a++  a = a + 1;
        int c = ++a;//执行完这行代码后,先自增,再给b赋值

        System.out.println(a);//5
        System.out.println(b);//3
        System.out.println(c);//5

        //幂运算 2^3  2*2*2 = 8
        //很多运算会使用一些工具类来操作
        double pow = Math.pow(2,3);
        System.out.println(pow);
    }
}

赋值运算符

=

关系运算符

>、<、>=、<=、==、!=instanceof

package operator;

public class Demo03 {
    public static void main(String[] args) {
        //关系运算符返回的结果: 正确,错误   布尔值

        int a = 10;
        int b = 20;
        int c = 22;

        //取余,模运算
        System.out.println(c%a);// c/a   22 / 10 = 2 ... 2

        System.out.println(a>b);//false
        System.out.println(a<b);//true
        System.out.println(a==b);//false
        System.out.println(a!=b);//true
    }
}

逻辑运算符

&&、||、!

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));//逻辑与运算:两个变量都为真,结果才为真
        System.out.println("a || b:"+(a||b));//逻辑或运算:两个变量有一个为真,结果就为真
        System.out.println("!(a && b):"+!(a&&b));//如果是真,则变为假;反之亦然

        //短路运算
        int c = 5;
        boolean d = (c<4)&&(c++<4);//c<4为假,则c++<4 不执行
        System.out.println(d);//false
        System.out.println(c);// 5
    }
}

位运算符

&、|、^、~、>>、<<、>>>(了解)

package operator;

public class Demo06 {
    public static void main(String[] args) {
        /*
        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);
    }
}

条件运算符

?:

package operator;

//三元运算符
public class Demo08 {
    public static void main(String[] args) {
        // x ? y : z
        //如果x==true,则结果为y,否则结果为z

        int score = 90;
        String type = score < 60 ? "不及格" : "及格";
        System.out.println(type);
    }
}

扩展赋值运算符

+=、-=、*=、/=

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);//30

        //字符串连接符 + ,String
        System.out.println(""+a+b);//3020
        System.out.println(a+b+"");//50
    }
}

包机制

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

  • 语法格式:

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

  • 为了能够使用某一个包的成员,我们需要再java程序中明确导入包

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

JavaDoc

  • javadoc命令是用来生成自己的API文档
  • 参数信息
    1. @author 作者名
    2. @version 版本号
    3. @since 指名需要最早使用的jdk版本
    4. @param 参数名
    5. @return 返回值情况
    6. @throws 异常抛出情况
  • 命令行生成doc:javadoc Java文件

https://note.youdao.com/yws/public/resource/a5a3fd9a1abedb981c957ec8a5659b7a/xmlnote/BA2F9A613C6944DFB3DDC8527725AA99/79

package com.johnny.Base;

/**
 * @author johnny
 * @version 1.0
 * @since 1.8
 */
public class Doc {

    String name;

    /**
     *
     * @param name
     * @return
     * @throws Exception
     */
    public String test(String name) throws Exception{
        return name;
    }
}
posted @ 2021-03-11 16:24  尚然  阅读(37)  评论(0)    收藏  举报