【Java学习】4.Java基础语法

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

注释

  • 类似写代码的时候的笔记,帮助对代码的理解
  • 不会被执行
  • 书写注释是一个非常好的习惯
  • java中注释分类
    • 单行注释
    • 多行注释
    • 文档注释

在这里插入图片描述

拓展:百度搜索有趣的代码注释

标识符

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

  • 所有的标识符都应该以字母(A-Z或者a-z),美元符号($)、下划线(_)开始
  • 首字符之后可以是字母字母(A-Z或者a-z),美元符号($)、下划线(_)或数字的任何字符组合
  • 不能使用关键字作为变量名或者方法名
  • 标识符是大小写敏感
  • 合法标识符举例:age、$salary、_value、__1_value
  • 非法标识符举例:123abc、-salary、#abc
  • 可以使用中文,但是不建议,也不建议用拼音

关键字

在这里插入图片描述

2、数据类型

  • 强类型语言
    • 要求变量的使用要严格符合规定,所有的变量都必须先定义后才能使用
    • 安全性高、速度稍慢
  • 弱类型语言

Java是强类型语言

Java的数据类型分为两大类

  • 基本类型(primitive type)
  • 引用类型(reference type)

在这里插入图片描述

基本数据类型

整数型默认:int
浮点型默认:double

在这里插入图片描述

补充:

  1. 什么是字节?

    • 位(bit):是计算机内部数据存储的最小单位,11001100是一个八位二进制数。
    • 字节(byte):是计算机中数据处理的基本单位,习惯上用大写的B来表示,1B(字节)=8bit(位)
    • 字符:是指计算机中使用的字母、数字、字、和符号,比如“中”、“国”这种单个的字。
  2. 整数拓展:进制

    • 二进制:前缀0b,如0b10表示十进制的2
    • 八进制:前缀0,如010表示十进制的8
    • 十进制
    • 十六进制:前缀0x,如0x10表示10进制的16
  3. 浮点数拓展:银行业务怎么表示?

    //现象1
    float f = 0.1f;//0.1
    double d = 1.0/10;//0.1
    System.out.println(f==d);//结果是false
    
    //现象2
    float d1 = 2312321231231231231f;
    float d2 = d1 + 1;
    System.out.println(d1==d2);//结果是true
    /*
    结论:
    1.不要用浮点型进行比较,浮点型是有限的、离散的,有舍入误差,他接近但是不等于。
    2.银行业务中要使用BigDecimal类来处理。
    */
    
  4. 字符拓展

    char c1 = 'a';
    char c2 = '中';
    System.out.println(c1);//输出:a
    System.out.println((int)c1);//输出:97
    System.out.println(c2);//输出:中
    System.out.println((int)c2);//输出:20013
    
    /*
    结论:
    1.所有的字符本质还是数字。
    2.Unicode编码表:
        如97=a,中=20013
        占2字节
        范围:0-65536 
    */
    
  5. 转义字符
    字母前面加上捺斜线""来表示常见的那些不能显示的ASCII字符.称为转义字符.如\0,\t,\n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思了。

    在这里插入图片描述

  6. /斜线与\反斜线

    • / 斜线, slash或又称为forward slash (前斜线), 原本是标点符号。 起源于古罗马,中世纪时用作逗号(而当时的双斜线//是被当作连接号的,后来演化成等号=)。
      • a) 英语里的斜线, 最常用的即使替代字符“or”表选择, 比如: Yes/No; 还有就是避免名字的冲突,比如美国的人口普查表中有"Assyrian/Chaldean/Syriac", 就是为了避免因Syriac名字不同叫法而产生的冲突或歧义,其实也是or的含义;
      • b) 算术; 英文里面称over, 比如: 123/456,也即分数
      • c) 金钱表示。 $50/- 表示50美元上限, 后面没有了,防止有人添加修改。
      • d) 日期的表示
    • \ backslash, 反斜线, 主要用于电脑中, 也正是对普通/斜线的借鉴。 操作系统(xNix), 电脑语言(C/C++, Perl),编码(部分Unicode)等都使用它。
  7. 额外拓展,之后学习。需要从对象、从内存分析

    String sa = new String("hello");
    String sb = new String("hello");
    System.out.println(sa==sb);//输出:false
    
    String sc = "hello";
    String sd = "hello";
    System.out.println(sc==sd);//输出:true
    
  8. 布尔值

    boolean flag = true;
    if(flag == true){}
    if(flag){}
    //Less is More!代码要精简
    

3、类型转换

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

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

低 -------------------------------------------> 高
byte,shory,char -> int -> long -> float -> double

强制类型转换:由低转高
自动类型转换:由高转低

注意点:

  1. 不能对布尔值进行转换
  2. 不能把对象类型转换为不相干的类型
  3. 在吧高容量转换到低容量的时候,强制转换
  4. 强制转换的时候,可能会存在内存溢出,或者精度问题,如:
    • 内存溢出:(byte)128,byte范围是-128~127之间
    • 精度丢失:(int)23.5,(int)33.4f

补充:

  1. JDK7新特性,数字之间可以用下划线分割

    int money = 10_0000_0000;
    System.out.println(money);//输出1000000000
    
  2. 计算一下自己200亿的年薪

    int money = 10_0000_0000;//幻想年薪
    int year = 20;//工作时长:年
    int total1 = money * year;
    System.out.println(total1);//输出:-1474836480
    //上述内存溢出,尝试修改接受类型为long再试试
    long total2 = money * year;//修改接受类型为long
    System.out.println(total2);//输出:-1474836480
    //上述修改为long接收后还是会溢出
    //是因为在money与year计算的时候已经溢出,再将溢出结果转换为long还是不能得到正确的结果
    long total3 = money * (long)year;//在计算前,将year强制转换为long类型
    System.out.println(total3);//输出:20000000000
    

3. 定义long类型的时候,数字后面尽量使用大写的L

```

 ```java
 long money1 = 100l;//小写的L有点像数字1,尽量避免这样写
 long money2 = 100L;//大写的L,一目了然,推荐
 ```

4、变量、常量

变量

变量是什么

可以变化的量。可以理解为内存中一个空间,里面可以放不同的东西。

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

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

type varName [=value] [{,varName[=value]}];
数据类型 变量名 = 值;
可以使用逗号隔开来生命多个同类型变量,但是不推荐。

变量作用域

  • 类变量
  • 实例变量
    • 属于对象
    • 如果不自行初始化,就是类型的默认值。
      • 数值型:0或者0.0
      • 布尔型:false
      • 其他类型(除了基本类型之外的):null
  • 局部变量

代码举例:

public class Variable{
    static int allClicks = 0; //类变量,有static关键字修饰
    String str = "hello"; //实例变量
    public void method(){
        int i = 1; //局部变量
    }
}

注意:

  1. 每个变量都有类型,类型可以是基本类型,也可以是引用类型。
  2. 变量名必须是合法的标识符。
  3. 变量声明是一条完整的语句,因此每个声明都必须以分号结束。

常量

什么是常量

  • 常量(Constant):初始化(initialize)后不能再改变值,不会变得值,Java中使用final关键字修饰。

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

    final 常量命 = 值;
    例:final double PI = 3.14;
    
  • 常量命一般都使用大写字符,单词之间以下划线分割。

变量的命名规范

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

  • 类成员变量:首字母小写 + 驼峰原则

    • 驼峰原则:第一个单词首字母小写,后面的单词首字母大写,如monthSalary

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

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

  • 类名:首字母大写 + 驼峰原则,如Man,HelloWorld

  • 方法名:首字母小写 + 驼峰原则,如run(),findAll()

5、运算符

Java语言支持如下运算符

算数运算符

+,-,*,/,%,++,--

算数运算符中,如果有Long类型,结果就为Long类型,否则就是Int类型。

long a = 123141241235L;
int b = 123;
shrot c = 10;
byte d = 8;

System.out.println(a+b+c+d);//返回Long类型
System.out.println(b+c+d);//返回Int类型
System.out.println(b+c+d);//返回Int类型
//算数运算符中,如果有Long类型,结果就为Long类型,否则就是Int类型。

补充:

  1. ++和–

    • i++:先赋值,后自增

      int a = 1;
      int b = a++;//先把a赋值给b,然后a再自增,这行代码执行完成后,a=2,b=1
      
    • ++i:先自增,后赋值

      int a = 1;
      int b = ++a;//a先进行自增,再把a自增后的值赋值给b,这行代码执行完成之后,a=2,b=2
      
  2. 幂运算

    例如2的3次方,可以使用Math类来计算。

    double pow = Math.pow(2,3);
    System.out.println(pow);
    
  3. 字符串连接符 +

    int a = 10;
    int b = 20;
    System.out.println(a+b+"");//结果输出30
    System.out.println(""+a+b);//结果输出1020
    

赋值运算符

=符号

int a = 10;//将10赋值给变量a

关系运算符

/*
>,<,>=,<=,!=instanceof
关系型运算符的返回值为布尔类型。
*/

逻辑运算符

  • 逻辑与(&&):两个变量都为真,结果才为真。
  • 逻辑或(||):只要有一个变量为真,结果就为真。
  • 逻辑非(!):如果为真,则结果为假;如果为假,则结果为真。

逻辑运算符有短路功能。

与运算:若第一个变量为假,则直接返回假。

或运算:若第一个变量为真,则直接返回真。

位运算符

位运算效率极高!!

/*
A = 0011 1100
B = 0000 1101
--------------------
A&B = 0000 1100 与:对应位置同时为1则为1,否则为0
A|B = 0011 1101 或:有1则为1
A^B = 0011 0001 异或:两个位置,相同则为0,否则为1
~B  = 1111 0010 取反:相反

2*8 = 16 2*2*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

2<<3结果是16
*/
System.out.println(2<<3);//输出16

条件运算符

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

扩展赋值运算符

4个拓展运算符:+=,-=,*=,/=

int a = 10;
int b = 20;
a+=b;//等价于a = a + b;
a-=b;//等价于a = a - b;

运算符的优先级

Java 语言中运算符的优先级共分为 14 级,其中 1 级最高,14 级最低。在同一个表达式中运算符优先级高的先执行。表 1 列出了所有的运算符的优先级以及结合性。

使用优先级为 1 的小括号可以改变其他运算符的优先级,即如果需要将具有较低优先级的运算符先运算,则可以使用小括号将该运算符和操作符括起来。

在这里插入图片描述

6、包机制

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

  • 包语句的语法格式为:

    package pkg1[.pkg2[.pkg2...]];
    例:package com.luhan.util;
    
  • 一般利用公司域名倒置,作为包名。如百度,com.baidu.www。

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

    //格式:import package1[.package2...].(classname|*);
    //例如
    import java.util.Date;
    import java.util.*;
    

推荐阅读:《阿里巴巴Java开发手册》

7、JavaDoc

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

  • 参数信息

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

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    Tools->Gerenate JavaDoc
    Other command line arguments:-encoding utf-8 -charset utf-8
    
发布了31 篇原创文章 · 获赞 45 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_30750609/article/details/104585603
今日推荐