基础语法

Posted liu的个人空间

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基础语法相关的知识,希望对你有一定的参考价值。

java基础语法

注释:

​ 单行注释:

//这里是单行注释

​ 多行注释:

/*
	这里
	是
	多行
	注释
*/

​ 文档注释:

/**
	这里是文档注释
*/

关键字:

​ 关键字共50个,其中 const 和 goto 是保留字

​ true、false、null 不是关键字,是特殊值

标识符

​ 类名、变量名、方法名、包名等,称为标识符。

标识符命名规则

  1. 组成:英文大小写字母,数字,下划线_,美元符号$
  2. 不能以数字开头
  3. 严格区分大小写
  4. 不能使用Java的关键字(包含保留字)和特殊值

标识符命名规范

  1. 见名知意
  2. 类、接口名:每个单词首字母大写
  3. 变量、方法名:第二个单词开始首字母大写
  4. 包名:全小写
  5. 常量名:全大写

运算符

运算符:一种特殊的符号,用以表示数据的运算、赋值和比较等。

表达式:用运算符连接起来的式子

分类 运算符
算术运算符 +-*/%++--
赋值运算符 =+=-=*=/=%=
关系运算符 >>=<<===!=
逻辑运算符 &、`
条件运算符 (条件表达式)?结果1:结果2;
位运算符(了解) &、`
算术运算符 符号解释
+ 加法运算,字符串连接运算,正号
- 减法运算,负号
* 乘法运算
/ 除法运算,整数/整数结果还是整数
% 求余运算,余数的符号只看被除数
++-- 自增自减运算
赋值运算符 符号解释
= 将符号右边的值,赋值给左边的变量
+= 将符号左边的值右边的值进行相加操作,最后将结果赋值给左边的变量
-= 将符号左边的值右边的值进行相减操作,最后将结果赋值给左边的变量
*= 将符号左边的值右边的值进行相乘操作,最后将结果赋值给左边的变量
/= 将符号左边的值右边的值进行相除操作,最后将结果赋值给左边的变量
%= 将符号左边的值右边的值进行取余操作,最后将结果赋值给左边的变量
关系运算符 符号解释
< 比较符号左边的数据是否小于右边的数据,如果小于结果是true。
> 比较符号左边的数据是否大于右边的数据,如果大于结果是true。
<= 比较符号左边的数据是否小于或者等于右边的数据,如果大于结果是false。
>= 比较符号左边的数据是否大于或者等于右边的数据,如果小于结果是false。
== 比较符号两边数据是否相等,相等结果是true。
!= 不等于符号 ,如果符号两边的数据不相等,结果是true。
逻辑运算符 符号解释 符号特点
& 与,且 falsefalse
` `
^ 异或 相同为false,不同为true
! falsetrue,非truefalse
&& 双与,短路与 左边为false,则右边就不看
` `

条件运算符

int i = (2 > 3 ? 1 : 10); //意为: 若2>3为true,则将1赋值给i,否则将10赋值给i
位运算符 符号解释
& 按位与,当两位相同时为1时才返回1
` `
~ 按位非,将操作数的每个位(包括符号位)全部取反
^ 按位异或。当两位相同时返回0,不同时返回1
<< 左移运算符
>> 右移运算符
>>> 无符号右移运算符

位运算符的运算过程都是基于补码运算

位运算直接对二进制进行位移操作实现数值运算,所以运算效率高

运算符优先级

  1. 表达式不要太复杂
  2. 先算的可以使用()

标点符号

java中共有12个标点符号

  • 小括号()用于强制类型转换、表示优先运算表达式、方法参数列表
  • 大括号用于数组元素列表、类体、方法体、复合语句代码块边界符
  • 中括号[]用于数组
  • 分号;用于结束语句
  • 逗号,用于多个赋值表达式的分隔符和方法参数列表分隔符
  • 英文句号.用于成员访问和包目录结构分隔符
  • 英文省略号...用于可变参数
  • @用于注解
  • 双冒号::用于方法引用

常量

  • 值不可改的量

  • 通过final关键字定义

常量值

​ 直接在程序里写出来的值

变量

值可以发生改变的量

int i=0;
i=1;
i=2;
i=3;

变量三要素

​ 数据类型、变量名、当前值

变量的使用注意事项

  • 先声明后使用

    ​ 如果没有声明,会报“找不到符号”错误

  • 在使用之前必须初始化

    ​ 如果没有初始化,会报“未初始化”错误

  • 变量有作用域

    ​ 作用域为变量直接所属的范围内,如果超过作用域,也会报“找不到符号”错误

  • 在同一个作用域中不能重名

    ​ 同一个,不能同时声明两个同名变量

存储

存储单位

最小单位:位(bit)

最小的存储单位:字节(Byte)

存储范围

中文字符:

​ 变量:2字节

​ 常量:3字节

数据类型

基本数据类型(八种):byte, char, short, int, long, float, double, boolean

引用数据类型:类、数组、接口等

常量整数值都是int型

常量小数值都是double型

自动类型转换

注意:char只能转int!对照ASCII码表进行转换

强制类型转换

当高转低时需要进行强制类型转换

转换格式

数据类型 变量名 = (数据类型) 被强转数据值;

ES6 Class 基础语法

参考技术A

通过对比,可以明显看出来,es5 的写法是传统的面向对象,es6 的类,完全可以看作构造函数的另一种写法。
es6 写法,可以看到里面有一个 constructor 方法,这就是构造方法,而this 关键字则代表实例对象

在类的实例上调用方法,就是调用原型上的方法。
另外,类的内部所有定义的方法,都是不可枚举的,与 es5 的行为不一致

Per只在 Class 内部有定义。

如果内部没有用到,可以省略 Per,如:

es6 不提供私有方法,只能通过变通方法模拟实现。

类的方法内部如果含有 this,它默认指向类的实例。但是,必须非常小心,一旦单独使用该方法,很可能报错。

类默认就是严格模式,所以不需要使用 use strict 指定运行模式。

由于本质上,es6 的类只是 es5 的构造函数的一层包装,所以函数的许多特性都被 Class 继承,包括 name 属性。

上面可以看出,x 和 y 都是实例对象 person 自身的属性(定义在 this 变量上),所以 hasOwnProperty 方法返回 true,而 toString 是原型对象的属性(定义在 Person 类上),所以 hasOwnProperty 方法返回 false

p1 和p2 都是 Person 的实例,原型都是 Person.prototype,所以 proto 属性是相等的

以上是关于基础语法的主要内容,如果未能解决你的问题,请参考以下文章