Java基础语法

Java语法基础

 

一、类的基本结构

类是组成Java程序的最小结构单元。

基本语法:

public class SyntaxBasic{     }

一个类的组成

有两个部分构成:类头和类体。

花括号前的部分称为类头。用来修饰一个类的特征。

  1. public称为访问修饰符

  2. class称为类关键字

  3. SyntaxBasic是类的名称,名称的命名要求要见名知意。

花括号内的部分称为类体,也就是类的主体部分。

 

二、 main方法的结构

main方法也成主方法,作为代码执行的入口,只要main方法体内存在有效代码,运行时便会输出结果。

基本语法:

public static void main(String[] args){     }

main方法的主要存在的一些特性

  1. public称为访问修饰符

  2. static表示静态方法

  3. void表示无参数返回值

  4. 圆括号内表示是方法能够获取到的参数也称资源。String[]表示参数类型为字串符数组类型,args为参数变量的名称

  5. 花括号称为方法体,包含代码的部分

 

三、注释、标识符、关键字、变量和常量

 

1.注释

便于给代码注释其含义的辅助文本,供编写者查看。

注释分为单行注释、多行注释和注释文档

 

注释的用法及规范

  1. 单行注释,一种是写在单行代码的后面,若内容过多,可以写在代码的上面。另一种是写在一行代码的前面,使这段代码编译被忽略但也不会消失

  2. 多行注释,对于代码中较为复杂的操作的解释,例如用在if,for循环的注释

  3. 注释文档,用于生成程序的相关信息。在实际工作中一般写在类头和方法头的上面,注解文档中可以用*号开头也可以不用

     

    规范演示

    /** * @author Wavesboker //作者名 * @version //版本号 * @since //开发用的Java版本 * @param //参数名 * @return //返回值 * @throws //异常抛出情况 */ public class Test{    /**     这是文档注释     支持多行    */    public static void main(String[] args){        int num = 10;//这是单行注释        //包含在注释中的代码编译时被忽略int score = 15;        System.out.println("显示的值" + num);   } }

     

 


 

2.标识符

给一个类、一个方法或者是变量定义的名称称为标识符。这些名称都是由程序员自定义的。

标识符的命名规则

  1. A~Z和a~z的英文字母表示(推荐使用规则)

  2. 0~9的数字(不能用来作为开头)

  3. _下划线(一般用在常量名两个单词之间的连接)

  4. $美元符号(只用在给类中类定义变量名字的特殊情况)

  5. 不能以关键字做为标识符,例如:public,class,void等

 

标识符的应用范围

  1. 类名:由英文字母命名,首字母大写。多个单词组成,单词首字母都要大写(帕斯卡命名)

  2. 方法名:由英文字母命名,首字母小写。多个单词组成,第二个单词首字母大写(驼峰命名)

  3. 变量名:由英文字母命名,方法名规则一样(驼峰命名)

  4. 常量名:英文字母全大写,多个单词之间用下划线_连接

 

实例:

定义类

public class Note{     }

定义变量

int number = 1;

定义方法

public void method(){     }

定义常量

final int MAX_VALUE = 100;

 


 

3.关键字-----

在某种语言当中表示特殊语义的特殊符号。由语言开发者定义,不能被程序员修改

关键字的种类以及作用

  1. 访问修饰符 Java中用来保护类、方法、变量和构造方法访问权限的修饰符

  • public 即公共的,访问权限最高,所有的类都可见。可以用在类、方法、变量和接口

  • default 默认的(可以不用写),在同一包当中可见。可以用在类、方法、变量和接口

  • protected

  • private

  1. 类修饰符

  • class 仅用来修饰类

 


 

4.变量

在Java中,变量用于对内存数据进行存储,获取。并且可以进行修改的标识符

变量的声明与定义

变量的声明,格式为数据类型+变量名。声明变量中没有数据

int number;

变量的赋值,格式为变量名+等号+变量值。前提先给变量声明之后,一般是将等号右边的值存放在左边的变量中

number = 10;

变量的声明并赋值,声明和赋值一起执行。一行代码完成变量声明和定义,给变量赋初始值

int age = 10; 

 

变量的作用域

作用:为了避免在复杂的系统中代码发生冲突,划分变量的使用范围。

public class Variable{    //全局变量    int quantity;    int height;    public static void main(String[] args){        //局部变量        int num = 10;        int power = 100;        System.out.println("数量为" + num);   } }

按照结构划分为全局变量和局部变量

  1. 全局变量:全局变量可以在整个类中使用

  2. 局部变量:只能在方法内使用,使用范围就是整个方法的花括号内

注意点:由于案例当中的main方法为静态方法,所以也无法使用全局变量

 


 

5.常量

常量的数据是固定不变的,初始值后不能被修改

常量的类型

分为普通常量(常数)和标志性常量

  1. 普通常量体现在变量值、字串符、字符和布尔常量

int a = 12; char b = 'z'; String name = "张三"; boolean result = true;
  1. 标志性常量是由final关键字修饰的变量

final double PI = 3.1415926;

注意:被final修饰的变量必须要赋予初始值,而且不能进行二次修改

 


 

四、数据类型

变量是来申请内存存储数值的。

内存管理系统通过变量的类型来匹配相同类型的储存空间,储存空间用来储存该类型数据。

Java中数据类型的分类

数据类型分为基本数据类型引用数据类型

基本数据类型分为整型浮点型字符型布尔型

 


 

1.整型的种类以及属性

  • byte 在JVM内存占1个字节,一个字节等于8位,数据有效范围-128~127

  • short 占16位,范围-32768~32767

  • int 最常用的整型存储类型 占32位 范围-2147483648~2147483647

  • long 占64位 范围-9223372036854775808~9223372036854775807

byte numA = 127; short numB = 32767; int numC = 2100000; long numD = 920000

 


 

2.浮点型的种类以及属性

  • float 单精度类型 占32位 范围在1.4E-45~3.4028235E38

  • double 双精度 占64位 范围在4.9E-324~1.7976931348623157E308

float height = 12.5f; double width = 5.567342;

注意点:float类型的常数需要加上f的后缀才能存放在float类型的内存中

 

浮点数据保留小数的处理

DecimalFormat 路径:Java.text.DecimalFormat

使用DecimalFormat类可以实现保留浮点数据小数点后几位数字的个数

DecimalFormat.format()方法可以将目标数据转换成字串符的格式

案例演示

import java.text.DecimalFormat;//从java中导入工具类 public class Test{    public static void main(String[] args){        DecimalFormat object = new DecimalFormat("0.000");//创建对象,特性是保留小数点后三位        double num = 2.744866952;        String numStr = object.format(num);//将浮点类型数据转换成字符串类型        System.out.println(numStr);   } }

经过处理的浮点数据会采用四舍五入的方式保留

 

科学计数法的表示

在Java中若出现浮点数据过长,系统会自动将其转换为科学计数法的形式,仅用于浮点型的数据

转换规则:

double number = 4E2.8;

4E2等于4乘以10的二次方,转换结果为400.8

 


 

3.字符型的定义以及属性

字符数据类型用来储存单个字符的数据,用单引号包围。JVM对字符采用unicode无符号进行编码。

char 在JVM中占用16位 范围为0~65535 默认值为\u0000

char name = '张';

char类型兼容int类型,可以直接将字符型数据转换成整数

 

转义字符

特殊的单个字符,不能直接显示的字符要用转义字符表示

下列为常见转义字符表

微信图片_20210803220712

 


 

4.布尔型的定义以及属性

boolean型数据类型只有两种表示方式true和false,一般应用于逻辑判断。

boolean 按JVM标准占4个字节 默认值为false

boolean result = false;

 


 

五、数据类型转换

1.数据类型转换的种类

  1. 自然转换,低精度数据类型向高精度数据转换

数据类型精度从小到大排序

byte<<<short<<<int<<<long<<<float<<<double

案例

byte small = 15; int bigger = byte;

低精度的数据可以任意的存放在高精度数据类型的内存中,只用于相兼容的数据类型,如char型不能和boolean型进行转换

 

  1. 强制转换,高精度类型数据存放在低精度类型内存中,会丢失数据精度

转换格式:

低精度数据类型变量 = (低精度数据类型关键字)高精度常量/变量;

案例

int num = (int)18.67;//double类型转int类型 double money = 1756.4457; long bank = (long)double;

括号内的强制转换的数据类型要与低精度数据类型变量相兼容

 

扩展:源码、反码和补码

  1. 原码

原码(true form)是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。

例如:用8位二进制表示一个数,+9的原码为0000 1001,-9的原码就是1000 1001

  1. 反码

反码是数值存储的一种,多应用于系统环境设置,如linux平台的目录和文件的默认权限的设置umask,就是使用反码原理。反码的表示方法是:正数的反码与其原码相同;负数的反码是对正数逐位取反,符号位保持为1。

例如:+11的反码为0000 1011,-11的反码为1111 0100

  1. 补码

正数:正数的补码和原码相同。负数:负数的补码则是符号位为“1”。并且,这个“1”既是符号位,也是数值位。数值部分按位取反后再在末位(最低位)加1。也就是“反码+1”。

例如:+7的补码为0000 0111,-7的补码为1111 1001

 

当数据类型从高转低发生溢出时,最终输出的结果会发生改变

案例

public class Test{    public static void main(String[] args){        int num = 130; byte result = (byte)num;//当int型转换byte型内存溢出后 结果会变成负数 System.out.println("转换内存溢出结果:"+result);   } }

从案例中得出最终转换结果为-126,因为数据的溢出,导致结果变成了负数

 

原理解析:

由于计算机底层是以数字二进制的源码、反码和补码来进行表示

根据原理分析

由于int类型的130强制转换为byte类型,byte类型数值位是8位,130转换成二进制为1000 0010,最高位是“1”

所以是一个负数为000 0010。在通过补码表示负数,转换成反码为111 1101,再+1等于111 1110

111 1110转换成十进制结果就是-126

 


 

各进制的表示方式和换算

1.进制的前缀表示

  • 二进制:前缀为0b,范围:0和1

  • 八进制:前缀为0o或者0,范围:0-7

  • 十进制:没有前缀,所有表示的数字都是十进制,范围:0-9

  • 十六进制:前缀为0x,后缀为H,范围:0-9,A-F,a为10

 

2.各进制的运算机制

二进制转十进制

int t = 0b1111; System.out.println(t);

运算过程:

t变量赋值的是一个二进制的数值

输出的值运算方法:

是从0开始右往左数2的0次方乘以第一位数加上2的1次方乘以第二位数加上2的2次方乘以第三位数……以此类推

每一位数运算的结果从右往左排再相加1+2+4+8=15

 

八进制转十进制

int i = 012; System.out.println(i);

运算过程:i变量赋值的是一个八进制的数值

输出的值运算方法:

同样从右往左数8的0次方乘以2加上8的1次方乘以1加上8的2次方乘以0

每一位数运算的结果从右往左排再相加2+8+0=10

 

十六进制转十进制

int y = 0xc8; System.out.println(y);

运算过程:y变量为十六进制

输出的值运算方法:

16的0次方乘以8加上16的1次方乘以12

结果为8+192=200

 

二进制转八进制

例:0b110101

由于2的3次方为8,可以将二进制代码从右往左每三个数字分成一组,每组按照4 2 1法则组合,110=6,101=5,组合起来是65

例:0b1011

若遇到不能每三个分成一组的,从右往左数,最后一个不能三个数分成一组的补0,001011,001=1,011=3,组合起来是13

 

二进制转十六进制类似于二进制转八进制,但是2的4次方为16,所以需要将二进制代码每四个组成一个数,每组按照8 4 2 1法则组合

 


posted @ 2021-12-24 09:46  海涛布克  阅读(92)  评论(0编辑  收藏  举报