02-Java基础语法

java基础语法

​ 我们学英语的时候要学一些语法,小时候刚学汉字的时候也要学一些基本语法,不然你们说话怎么说话,同样咱们学习一门编程语言也是如此,需要掌握他的语法才能把它书写出来。

注释、标识符、关键字

注释

​ 标注解释,平时写代码,在代码量比较少的时候还可以看懂自己写的,比如刚才的HelloWorld,当你的项目里有一万行、十万行代码的时候,此时无法靠人脑去把代码都记住,过一段时间就忘了或者记不住想要借助一些标注,我们就需要用到注释了。类似上学时做的笔记。我们在写代码时,要把程序用我们中文或者别的能看懂语言写好这段代码是什么意思。

​ 注释不会被执行,是给我们写代码的人写的。

书写注释是一个非常好的习惯。

平时写代码一定药注意规范

在学习时尽量给自己多找一些乐趣,这样就会更开心了

java中的注释有三种

  1. 单行注释 //,快捷键为Ctrl + /,可以直接注释
  2. 多行注释 /* 并按下空格即可
  3. 文档注释 输入/**并按下空格即可

标识符

​ 首先,每个人从出生开始都有一个名字,生活中的事物也都有名字。在程序里也是不例外的,咱们作为造物主也要给所有东西去一个名字,比如我刚刚才HelloWorld,是文件名也是类名。高亮的部分时关键词,是我们系统定义的。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CWKo5Tri-1654002451159)(C:\Users\思无邪\Desktop\微信截图_20220512121917.png)]

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

数据类型

强类型语言

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

弱类型语言

​ 如JS,

java的数据类型分为两大类

基本类型(primitive type)

​ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AKs15tzN-1654002451160)(C:\Users\思无邪\Desktop\QQ截图20220512164500.jpg)]

​ 平时生活中肯定会用到数字,字符即字。数字还会分为整数和小数,java里也是这样的。

​ 字符:是指计算机中使用的字谜、数字、字和符号。

引用类型(reference type)

​ 存放的是对象的地址信息,指向对象在堆中的具体位置。

类型转换

​ 由于java是强类型语言,所以在进行有些运算的时候,需要用到类型转换.整型和常量、字符串是可以混合运算的,刚才我们也说了char本质上是一串数字。

​ 运算中,不同类型的数据先转化为同一类型,然后进行运算。小数的优先级一定大于整数。

​ 从低到高依次为byte,short,char --> int --> long --> float --> double

强制类型转换

​ 从高到底

自动类型转换

​ 从低到高

类型转换代码

package com.kuang.base;

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

        // 强制转换 (类型)变量名
        // 自动转换
        // 类型转换在后面会经常用到,除了转换基本类型还可以转换类,格式都是以燕大哥

        System.out.println(i);
        System.out.println(b);

        /*
         注意点:
         1。不能对布尔值进行转换,布尔是按位的,不能进行转换
         2. 不能把对类型转换为不相干的类型,相当于不能把人转换成猪,但可以把男人转换成女人
         3. 在把大容量转换到低容量的时候,强制转换
         4. 转换的时候可能存在内存溢出,或者精度问题
         */
        System.out.println("=======================");
        System.out.println((int)23.7);
        System.out.println((int)-45.89f);

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

数据类型扩展

package com.kuang.base;

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

        int i=10;
        int i2 = 010;   // 八进制
        int i3 = 0x10;  // 十六进制     0~9 A~F

        System.out.println(i);
        System.out.println(i2);
        System.out.println(i3);
        System.out.println("=========================================================");

        // 浮点数拓展    银行业务怎么表示钱
        // BigDecimal   数学工具类
        // float    能表示的数字是有限的,但有些东西除出来是无限的、离散的
        // 存在舍入误差,很多数字float类型没办法精确的表示,结果只能是大约束,接近但不等于
        // double
        //  最好完全避免使用浮点数进行比较

        float f = 0.1f;
        double d = 1.0/10;

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


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

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

        // 所有的字符本质还是数字
        // 编码问题 Unicode编码表:97 = a; 2字节 0~65536  Excel   2的16次方
        // U0000 UFFFF

        char c3 = '\u0061';
        System.out.println(c3);

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

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

        //
        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){// 默认判断里面的东西是不是为真
        }
        // Less is More 代码要精简易读

    }
}

变量、常量

​ 在中学的时候学过一元二次方程,一般是x等于什么,y等于什么,当时老师会告诉你x和y是一个变量

​ 变量是什么?就是可以变化的量。可以通过变量操作内存中得一些数据,变量指代内存中的一块空间,空间的位置是定死的,存什么东西是不确定的。比如家里有个的衣柜,有三个格子,分别贴上鞋子、衣服和袜子的标签。这个柜子,就和电脑里的内存一样是本身就存在的。只是我们给它加了个标签,这个地方应该放鞋子,这个地方应该放衣服、这个地方应该放袜子。

​ 内存也和衣柜类似,需要给他指定一个空间放指定数据类型的数据,假如放了四个整数,怎么区分这四个,我们需要取名字去找到他,于是有了变量的名。

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

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

​ 数据类型 变量名 = 值;// 不建议在一行定义多个变量。

变量的作用域

​ 类变量 要加static

​ 实例变量

​ 局部变量 方法里

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

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

​ 格式: final 常量名 = 值;

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

package com.kuang.base;

public class Demo08 {

    // 类变量   static 从属于类,而且会随着这个类一起出现一起消失
    static  double salary = 2500; // 2500默认是int类型

    // 属性,现在就简单理解为变量

    // 实例变量:从属于对象;如果不自行初始化,这个类型得变量会有默认值 0 0.0 u0000
    // 布尔值默认是false
    // 除了基本类型,其余的默认值都是null
    // 通过这个类才能使用他,在类里面
    String name;
    int age;

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

        // 局部变量:使用前必须声明和初始化值.作用域在方法里面
        int i = 10;
        System.out.println(i);

        // 变量类型 变量名字 = new com.kuang.base.Demo08
        Demo08 demo08 = new Demo08();
        System.out.println(demo08.name);
        System.out.println(demo08.age); // 能不能也想输出i那样输出name和age

        // 类变量   static删掉后就不能直接输出了
        System.out.println(salary);
    }

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

    }
}

变量的命名规范

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

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

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

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

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

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

​ 除了常量和类名,其他都是首字母小写加驼峰原则。

运算符

**Java语言支持如下运算符:**运算符的优先级一般用()更明显易懂

  • 算术运算符:+,-,*,/,%(取余运算即模运算),++,–

  • 赋值运算符:=。如int a = 10;念为把10赋值给a

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

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

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

  • 条件运算符:?:

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

    重点掌握前四个

    运算符的优先级

运算符扩展

++i与i++
package com.kuang.operator;

public class Demo04 {
    public static void main(String[] args) {
        // ++   --  自增,自减   一元运算符,刚才的二元都是两个或者多个
        int a =3;

        int b = a++; // 执行完这行代码后,先给b赋值,在自增
        // a++ a = a +1     隐藏的自增的语句,不需要自己去写
        System.out.println(a);
        // a++ a = a +1
        int c = ++a;// 执行完这行代码钱,先自增,再给b赋值

        System.out.println(a);
        System.out.println(b);
        System.out.println(c);

        // 幂运算 我们平常写的是这样的2^3(java里没有这个写法,
        // 很多运算我们会使用工具类来进行操作)
        // Math类提供了很多科学工程计算需要使用到的方法
        // 2*2*2 = 8
        double pow = Math.pow(2,3);
        System.out.println(pow);
    }
}

逻辑运算符的短路
package com.kuang.operator;

// 逻辑运算符
public class Demo05 {
    public static void main(String[] args) {
        // 与(and)   或(ro)   非(取反)
        boolean a =true;
        boolean b =false;

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

        // 短路运算
        System.out.println("a && b:"+(b&&a));

        int c = 5;
        boolean d = (c<4)&&(c++<4); // 前一个条件c<4的结果为false了,就不会去执行c++<4了
        System.out.println(d);
        System.out.println(c); // c还是5

        boolean e = (c++<4)&&(c<4);
        System.out.println("交换c<4和c++<的位置后结果如下:");
        System.out.println(e);
        System.out.println(c); // c执行了c++,变为6
    }
}

位运算符
package com.kuang.operator;

public class Demo06 {
    public static void main(String[] args) {
        /*
        位运算是直接与底层打交道的,运算效率非常高,很多底层相关的算法里都有用到
        A = 0011 1100
        B = 0000 1101
        不要轻易的去使用位运算,很容易出错
        -----------------------------------------------
        A&B = 0000 1100
        A|B = 0011 1101
        ^是异或,如果两个相同则为1,不同则为0
        A^B = 1100 1110
        ~取反
        ~B = 1111 0010

        2*8 = 16怎么运算最快? 2*2*2*2计算机正常去运算的话要在底层做非常多的事情
        计算机底下都是电路,如果是位运算,换一个灯亮即改变它的高低电路即可
        效率极高
        <<  *2
        >>  /2

        比如我们现在有8位二进制数
        0000 0000       0
        0000 0001       1
        0000 0010       2
        0000 0011       3
        0000 0100       4
        0000 1000       8
        0001 0000       16
        1,2,4,8,16的二进制往左移动一位


         */

        System.out.println(2<<3);
    }
}

包机制、JavaDoc

​ 包的本质就是文件夹。

​ 为了更好地组织类,Java提供了包机制,用于取别类名的命名空间。防止命名空间重复的问题。

​ 包语句的语法格式为:

​ package pkg1[ . pkg2[ . pkg3…]];

​ 一般利用公司域名倒置作为包名;www.baidu.com com.baidu.www

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

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

JavaDoc

  • JavaDoc是一种技术,可以将我们的一些注释信息生成一个帮助文档,类似于java的API即JDK帮助文档。javadoc命令是用来生成自己API文档的
  • 参数信息
    • @author 作者名
    • @version 版本号
    • @since 指明需要使用的jdk版本
    • @param 参数名
    • @return 返回值情况
    • @throws 异常情况抛出

本文内容是看了他人视频后的小结。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值