java语法基础(一)

2023-03-02,,

这个是自己前两年做java视频教程时候的课件。感兴趣的同学可以参考下。

这里是纯粹的语法行总结。

editplus的使用

  选择项目目录

  打开editplus 左侧目录导航栏 可以打开盘符,文件夹 可以选中某个文件夹,右键,创建 底下可以显示被选中文件夹的所有文件

  新建文件

  打开editplus 文件 ->新建文件 ->java

  缩放字体

  alt+shift+(NUM+)放大 alt+shift+(NUM-)缩小

  保存文件

  首先在左侧目录栏中选择要存储的路径 点击保存按钮,java文件会保存到制定的路径下

java的命名规则

  java标识符

  什么是标识符: Java语言中,对于变量,常量,函数,语句块也有名字,我们统统称之为Java标识符. 标识符是用来给类、对象、方法、变量、接口和自定义数据类型命名的。 特点: 1 Java标识符由数字,字母和下划线(_),美元符号($)或人民币符号(¥)组成。 2 java标识符不能以数字开头 3 java标识符区分大小写 4 标识符没有长度限制(一般也不要写过长) 5 标识符命名要做到见名知意 6 关键字,保留字不可以做标识符

  关键字,保留字: java的关键字指的是对java编译器有特殊含义的标识符。它们用来表示一种数据类型或者程序结构等。不可以作为自定义标识符给变量,方法,类,包等命名。 java的保留字指的是当前对java还没有特殊含义,今后可能被用作特殊词的一些标识符。

  保留字: "const"和"goto"

  自定义标识符命名规则: 1 类名遵守“大驼峰”命名法 2 变量名和方法名遵守“小驼峰”命名法 3 包名全部使用小写 4 常量全部大写,单词之间用_分割

java的注释

  代码注释

  行注释://注释的内容 段注释:/* 注释的内容 */ 在java中/**/不可以嵌套,因为java中会把第一个遇到的*/作为段注释结束的标记

  文档注释

  文档注释:/** 注释的内容 */ 文档注释的主要目的是帮助生成接口文档。 生成接口文档的命令: javadoc -d 目标文档路径 目标java源代码文件 可以在注释中添加“@author 作者”方式添加作者,然后用 javadoc -author -d 目标文档路径 目标java源代码文件 生成带有作者的注释文档。 还可以通过 javadoc -verson - author -d 目标文档路径 目标java源代码文件 的方式,生成带有版本的注释文档。

  使用javadoc注意的细节

  1 如果一个类使用javadoc生成文档,那么该类必须使用public修饰。 2 文档注释的内容一般写在类/方法的上面。

  注释的规范和细节

  一般单行注释位于代码的右侧 多行注释与文档注释写在类/方法的上面。 注意细节: 1 单行注释可以嵌套使用 2 多行注释不可以嵌套使用 3 文档注释也不可以嵌套使用

  注释的作用

  1 使用文字对程序进行说明 2 调试代码(通过注释代码可以组织代码的执行) 大家以后会经常使用注释调错

java的常量

  常量的定义

  在程序执行过程中,其值不能发生改变的量称为常量。

  五种常量

  整数常量:10 234 小数常量: 314 9.8 布尔常量: 只有两个值 true(正确) false(错误) 字符常量:使用单引号引起来的单个字符。‘a’’1’ 字符串常量: 使用双引号引起来的若干个字符。 “hello world”

  final常量

  加了final说明此变量的值不可改变,也就说常量, int age = 20; 是变量 final int age = 20; 是常量

进制和进制转换

  进制的定义

  进制也就是进位制,是人们规定的一种进位方法。 对于任何一种进制---X进制,就表示某一位置上的数运算时是逢X进一位。 十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,x进制就是逢x进位。

  进制的规律

  位权:数制中每一固定位置对应的单位值称为位权。 数位:不同计数单位,按照一定顺序排列,它们所占位置叫做数位. 一个十进制的数字123 1,2,3是每一上的数字 从右往左依次是个位,十位,百位,千位... 数字的值的大小等于每一位上的数字乘以对应的位权然后求和。 123 = 3*10^0 + 2*10^1 + 1*10^2

  常见的进制

  二进制数:二进制数有两个特点:它由两个基本数字0,1组成,二进制数运算规律是逢二进一。 八进制数:由于二进制数据的基R较小,所以二进制数据的书写和阅读不方便,为此,在小型机中引入了八进制。八进制的基R=8=2^3,有数码0、1、2、3、4、5、6、7,并且每个数码正好对应三位二进制数,所以八进制能很好地反映二进制。八进制用下标8或数据后面加O表示 例如:二进制数据 ( 11 101 010 . 010 110 100 )2 对应 八进制数据 ( 3 5 2 . 2 6 4 )8或352.264O. 十进制:人们通常使用的是十进制。它的特点有两个:有0,1,2….9十个基本数字组成,十进制数运算是按“逢十进一”的规则进行的. 十六进制: 由于二进制数在使用中位数太长,不容易记忆,所以又提出了十六进制数 十六进制数有两个基本特点:它由十六个字符0~9以及A,B,C,D,E,F组成(它们分别表示十进制数10~15),十六进制数运算规律是逢十六进一,即基R=16=2^4,通常在表示时用尾部标志H或下标16以示区别。 例如:十六进制数4AC8可写成(4AC8)16,或写成4AC8H。

  不同进制的常量表示

  0b 开头表示二进制 0 开头表示八进制 0x 开头表示十六进制 正常表示位十进制

  不同进制之间数值的相互转换

  其他进制转十进制: 每一位上的数字乘以对应的位权然后求和。 十进制转其他进制: 不断对对应的进制取余,然后倒写 二进制 <--> 八进制: 小数点前后,每三位二进制转换为一位八进制 二进制 <--> 十六进制: 小数点前后,每四位转换为一位十六进制

原码,反码,补码(计算机存储数据的原理)

  原码

  计算机以二进制形式存储数据。存储空间的最高位表示正负,其他位表示数值的大小。 所以: 正数的原码就是它的二进制表示 负数的原码是它的绝对值的二进制表示,然后最高位是1

  反码

  正数的反码就是原码,负数的反码是符号位不动,其他位取反(取反,就是1变0,0变1);反码是由原码求出来的

  补码

  计算机以补码的形式存储数据。 正数的原码,反码,补码三位一体。负数的补码是反码加1.

java的变量

  变量的定义

  在程序执行过程中,其值可以发生改变的量称为变量。 变量是一个可以存储数据的容器

  变量的声明格式

  变量类型 变量名=变量值; 其中变量的类型,用来描述存储值的方式和分配空间大小。 变量名,方便后面代码使用 这种声明方式“变量初始化” 也可以一次声明多个变量 变量类型 变量名1,变量名2=10;

  变量的基本数据类型

  一共有八种基本类型 整型: byte:占有8个bit二进制位 short:2个字节空间 int:4个字节空间 long:8个字节空间 如果一个整型常量,没有特殊说明,默认是int型 实型: float:4个字节空间,6~7位有效数字 double:8个字节空间,15~16位有效数字 布尔类型: boolean:只有两个值ture false。占有一个/四个字节;看是单独声明还是声明成数组 字符类型: char:2个字节空间

java的数据类型转换

  自动类型转换(也叫隐式类型转换)

  可以将一个数赋值给更大数值范围的变量,例如可以经byte 变量赋值给short变量可以将short变量赋值给int变量可以将int变量赋值给long变量。 自动类型转换(也叫隐式类型转换) 要实现自动类型的转换,需要满足两个条件,第一两种类型彼此兼容,第二目标类型取 值范围必须大于源类型。所有的数字类型,包括整形和浮点型彼此都可以进行转换。

  强制类型转换(也叫显式类型转换)

  不可以将一个数值赋给范围更小数值范围的变量,除非进行类型转换。 当两种类型彼此不兼容,或者目标类型取值范围小于源类型(目标是byte源是int) 无法自动转换,此时就需要进行强制类型转换。 格式,在前面添加 (类型) 强制类型转换需要注意的问题是:精度缺失。

运算符和表达式

  运算符和表达式:

  运算符:Operator表示各种算数/逻辑等运算的符号。按照操作对象数目的不同,可以分为单目运算符/双目运算符/三目运算符。 表达式:使用运算符把常量,变量,函数等连接起来,称为表达式。表达式都是有值的。 表达式的运算结果称为表达式的值;表达式的值是常量!

  java中的运算符

  1 算术运算符 + - * / % ++ --

  2 赋值运算符 =

  3 复合赋值运算符 += -= *= /= %=

  4 比较运算符 > < >= <= == !=

  5 逻辑运算符 & | ^ ! && ||

  6 位运算符 & | ^ ~

  7 位移运算符 << >> >>>

  算术运算符

  算术运算符:注意用于算术运算,由算术运算符连接起来的表达式称为算术表达式。 + :求两个数的和。需要左右两个操作数,属于双目运算符。实例:1+3 使用+运算符的时候,两个不同类型的数据相加,会进行隐士的类型转换。 如果+左右两侧是字符串,那么表示两个字符串的拼接;如果是常量/变量与字符串进行+,那么会首先把常量/变量转换成字符串然后进行字符串拼接。 +也可以操作单独的一个数,表示正号。这相当于给操作数乘以1.一般不这样用 -:求两个数的差。需要左右两个操作数,属于双目运算符。实例:3-2 使用-的时候,如果左右两侧操作数类型不同,会进行隐式的类型转换。 -也可以用作单独的一个操作数,表示负号。这就相当于给操作数乘以-1。比如-3 *:表示两个数的乘积。需要左右两个操作数,属于双目运算符。实例:3*4 /:表示两个数的商。需要左右两个操作数,属于双目运算符。实例:11/5 一般在数学运算中11÷5的值应该是2.2;但是在计算机中11/5的值是2.在计算机运算中,相同类型的数据运算结果还是哪个类型。不同类型的数据进行运算会首先转换成相同类型,然后运算结果的类型保持一致。 %:取模运算符。获取两个数相除之后的余数。需要左右两个操作数,是双目运算符。 在取模运算中,余数的负号取决于被取余的数的正负。余数的值的大小为两个操作数的绝对值的余数大小。

  自增资减运算符

  自增自减运算符也属于是算术运算符。他们都只需要一个操作对象,是单目运算符。 自增自减运算符的操作对象必须是一个变量。 ++:自增运算符,能够使得被操作的变量值在原来基础上加1.可以前置也可以后置。 int i=0; i++; ++i; 前置与后置的区别: 前置:++i;先加1,后使用。就是表达式的值为+1之后的值。 后置:i++;先使用,后加1。就是表达式的值为没有+1的值。 --:自减运算符,能够使得被操作的变量值在原来的基础上减1.可以前置也可以后置。 int i=2; i--; --i; 前置与后置的区别: 前置:--i;先减1,后使用。就是表达式的值为-1之后的值。 后置:i--;先使用,后减1。就是表达式的值为没有-1的值。 自增自减运算符的原理: int a = 10; int sum = a--; println(a + sum); int i = 10; i = i++; println(i)i的值应该是多少? 后置自增在jvm虚拟机中运行的原理: 1 首先jvm虚拟机会创建一个临时的变量temp保存i的原先的值。因为表达式的值等于+1前的值. 2 然后jvm虚拟机会让i的值进行+1操作,这时候i为11. 3 然后jvm虚拟机会返回i++的运算结果,就是temp保存的值10.所以i的值又会变成10.

  赋值运算符,复合赋值运算符

  赋值运算符:赋值运算符的作用是把一个常量/表达式的值(表达式的值是一个常量)赋与一个变量。 =:赋值运算符。需要左右两个操作对象,属于双目运算符。有左值和右值。 左值:位于= 的左侧,必须是一个变量。 右值:位于=的右侧,必须是一个常量/常量表达式。 int i = 10; i = 11+2 复合赋值运算符:把算术运算符+ - * / %和赋值运算符结合起来,构成复合赋值运算符。 +=: i + =10相当于i = i + 10 -=: i - =10相当于i = i - 10 *=: i * =10相当于i = i * 10 /=: i / =10相当于i = i / 10 %=: i %=10相当于i = i % 10 复合赋值运算符,相当于是表达式的简写。 在java中有个点: byte i = 1; byte j = 2; i = i+j ;//这样写编译时候会报错。需要进行强制类型转换 i += j;//这样写就不会报错。编译器会自动进行类型转换。

  比较运算符

  比较运算符用来比较两个操作对象的大小。比较运算符都是双目运算符 比较运算符构成的表达式为比较表达式。 比较表达式的返回值都是boolean类型。 >:大于符号:比较左边的操作数是否比右侧的大,如果成立,表达式的值返回true;不成立,返回false。 println(1>3) <:小于符号:比较左边的操作数是否比右侧的小,如果成立,表达式的值返回true;不成立,返回false。 >=:大于等于符号:比较左边的操作室是否大于或者等于右侧的操作数,如果成立,表达式的值为ture;否则为false <=:小于等于符号:比较左边的操作数是否小于或者等于右侧的操作数,如果成立,表达式的值为true;否则为false ==:等于符号:比较两边的操作数是否相等。如果相等,表达式的值为true;否则为false !=:不等于符号:比较两边的操作对象是否不相等。如果不相等,表达式的值为true;否则返回false

  逻辑运算符

  逻辑运算符主要帮助计算机进行逻辑运算。都需要两个操作对象,属于双目运算符 (逻辑运算符的操作对象都是boolean类型。如果有的逻辑运算符两侧使用了int等数据类型,那么就变成了位运算符) 由逻辑运算符连接构成的表达式,称为逻辑表达式。 逻辑表达式的值都是boolean类型。 说明:在java中,true表示真,false表示假 &:逻辑与;并且的意思。 特点:两边同时为真才为真;一个为假就是假 println(true & false) |:逻辑或;或者的意思。 特点:两边同时为假才为假;一个为真就是真 println(true | false) ^:逻辑亦或; 特点:两边boolean值相同即为假,不同即为真 !:逻辑非;不是的意思 特点:逻辑取反;真变成假,假变成真 &&:短路与 也叫做 双与 特点和逻辑与(&)保持一致。 双与(&&)和单与(&)的区别: 与在一个为假的时候,就为假。所以理论上说只要与运算中发现一个为假,第二个表达式就无需进行判断了。单与在逻辑运算过程中,哪怕判断出第一个为假,也会对后面表达式进行运算。双与则不会。 举例: int i = 10; println((i>10) & (i++ > 10)) println(i); i = 10; println((i>10) && (i++ > 10)) println(i); ||:短路或 也叫 双或 特点和单或(|)保持一致 双或(||)和单或(|)的区别: 或运算,在一个逻辑为真的时候,就已经为真了,所以理论上不需要进行第二个表达式的判断。单或在或逻辑运算中,哪怕已经判断出第一个表达式为真,也会进行第二个表达式的运算。双或则不会。 int i = 10; println((i=10) | (i++ > 10)) println(i); i = 10; println((i=10) || (i++ > 10)) println(i);

  位运算符

  位运算符可以使计算机对操作数按位进行逻辑运算。 位运算表达式的值的类型,和操作数的类型保持一致。 &:按位与 特点:相同数位上,同时为1才为1,一个为0就为0 byte i = 10; byte j = 3; println( i & j ); 可以画图表示 |:按位或 特点:相同数位上,同时为0才为0,一个为1就是1 byte i = 10; byte j = 3; println( i | j ); ^:按位亦或 特点:相同数位上,相同即为0,不同即为1 以后有个重要特定:对同一个数连续亦或两次,还能得到这个数本身。使用这个特点可以用于交换两个数的值/加解密。 ~:按位取反(单目运算符) 特点:按位取反,就是1变成0,0变成1。

  延伸的题目: 1 交换两个数的值。 int i=1; int j=2; 我们有三种方式: A: int temp = i; i = j; j = temp; B: i = i+j; j = i -j; i = i -j; C: i = i^j; j = i^j://相当于 i^j^j i = i^j;//相当于i^j^i 2 获取一个数字指定位数的值 比如获取0b1001 0110的底三位的值。 0b1001 0110 ^ 0b0000 0111即可 3 加密

  位移运算符

  位移运算符可以使计算机将操作数按位进行移动。 <<:左移运算符 特点:将数按照二进制存储方式,依次向左移动n位。低位补0 1000 0110 << 2得到 0001 1000 左移之后,因为是向高位移动,相当于在该类型范围之内,这个数a变成了a*(2^n) >>:右移运算符 特点:将数按照二进制存储方式,依次向右移动n位。高位如果是整数,补0;如果是负数,补1 1000 0110 >> 2得到 1110 0001 右移之后,因为是往低位移动,相当于在该类型范围之内,这个数a变成了a/(2^n) >>>:无符号右移 无符号右移和右移运算符差不多,都是按照二进制存储方式,每一位依次向右移动n位。只不过无论正数还是负数,右移过程中高位都补0

  比目运算符

  java中唯一的三目运算符 ? : : 使用方式: (条件表达式)?表达式1: 表达式2 运算步骤: 判断条件表达式是否为真。如果返回true,那么执行表达式1,整个三目表达式的值就是表达式1的值。如果条件表达式不成立,执行表达式2,整个三目表达式的值就是表达式2的值。 我们现在没有学条件判断语句 (条件表达式)?表达式1: 表达式2 相当于 if(条件表达式) { 表达式1; }else{ 表达式2; }

  运算符的优先级和结合性

  类型转换的规律

  整体上小容器类型转大容器类型;低精度类型转高精度类型 具体说: char,byte,short和int类型运算,会转换成int类型 int和long类型运算,会转换成long类型 int和float类型运算,会转换成float类型 float和double类型运算,会转换成double类型 其他类型和字符串进行运算,会转换成字符串类型 大概如下:

java语法基础(一)的相关教程结束。