java基础语法(上)

Java基础语法(上)

一.关键字&标识符

提示:以下是本篇文章正文内容,下面案例可供参考

1.关键字

​ Java关键字是电脑语言里事先定义的,有特别意义的标识符,有时又叫保留字,还有特别意义的变量。Java的关键字对Java的编译器 有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名、方法名、类名、包名和参数

书写时必须注意关键字为小写,Java中严格区分大小写

关键字按照作用不同可分为:

  • 访问控制

  • 类方法变量修饰符

  • 程序控制

  • 错误处理

  • 包相关

  • 基本类型

  • 变量引用

  • 保留字

    img

    图片来源: https://blog.csdn.net/z1web/article/details/89068217

下面是Java中每个关键字的含义

关键字含义
abstract表明类或者成员方法具有抽象属性
assert断言,用来进行程序调试
boolean基本数据类型之一,声明布尔类型的关键字
break提前跳出一个块
byte基本数据类型之一,字节类型
case用在switch语句之中,表示其中的一个分支
catch用在异常处理中,用来捕捉异常
char基本数据类型之一,字符类型
class声明一个类
const保留关键字,没有具体含义
continue回到一个块的开始处
default默认,例如,用在switch语句中,表明一个默认的分支。Java8 中也作用于声明接口函数的默认实现
do用在do-while循环结构中
double基本数据类型之一,双精度浮点数类型
else用在条件语句中,表明当条件不成立时的分支
enum枚举
extends表明一个类型是另一个类型的子类型。对于类,可以是另一个类或者抽象类;对于接口,可以是另一个接口
final用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量
finally用于处理异常情况,用来声明一个基本肯定会被执行到的语句块
float基本数据类型之一,单精度浮点数类型
for一种循环结构的引导词
goto保留关键字,没有具体含义
if条件语句的引导词
implements表明一个类实现了给定的接口
import表明要访问指定的类或包
instanceof用来测试一个对象是否是指定类型的实例对象
int基本数据类型之一,整数类型
interface接口
long基本数据类型之一,长整数类型
native用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的
new用来创建新实例对象
package
private一种访问控制方式:私用模式
protected一种访问控制方式:保护模式
public一种访问控制方式:共用模式
return从成员方法中返回数据
short基本数据类型之一,短整数类型
static表明具有静态属性
strictfp用来声明FP_strict(单精度或双精度浮点数)表达式遵循[IEEE 754](https://baike.baidu.com/item/IEEE 754)算术规范
super表明当前对象的父类型的引用或者父类型的构造方法
switch分支语句结构的引导词
synchronized表明一段代码需要同步执行
this指向当前实例对象的引用
throw抛出一个异常
throws声明在当前定义的成员方法中所有需要抛出的异常
transient声明不用序列化的成员域
try尝试一个可能抛出异常的程序块
void声明当前成员方法没有返回值
volatile表明两个或者多个变量必须同步地发生变化
while用在循环结构中

注意:null,false,true这几个保留字不是关键字,而是文字,包含Java定义的值.不可当标识符使用

2.标识符

标识符分为关键字用户自定义标识符

类,类的对象,方法,变量等要素进行的定义命名,标识符可有一个或多个字符.在Java中,其命名规则如下

  • 标识符由数字(0~9)、美元符号($)、下划线(_)以及 Unicode 字符集中符号大于 0xC0 的所有符号组合构成.
  • 必须以字母、下划线和美元符号开头,后面可以是任何字母、数字、美元符号或下划线.
  • 不能以数字开头,也不能使用任何 Java 关键字作为标识符 .
  • 标识符可以包含关键字,但不能与关键字重名.
  • 严格区分大小写,不能有空格.
  • 不能使用中文及拼音
2.1各种类型命名规范
  1. 项目名全部小写 (project)

  2. 包名全部小写 (package)

  3. 类名首字母大写,其余组成词首字母依次大写. (CarClass)

  4. 变量名,方法名首字母小写,如果名称由多个单词组成,除首字母外每个单词的首字母都要大写. (newTest)

  5. 常量名全部大写. (MAX)

二.Java数据类型

1.基本数据类型

在这里插入图片描述

其中声明long型与float型变量时,需添加后缀(l或L,F或f)
在这里插入图片描述

上图,idea未报错

在这里插入图片描述

不加就会报错

基本数据类型之间的转换
  1. 默认转换

小容量默认转换为大容量

容量从小到大依次为: byte/short/char–>int–>long–>float–>double

byte,short,char三者在运算中会转换为int,不会相互转换

操作数1类型操作数2 类型转换后的类型
byte、short、charintint
byte、short、char、intlonglong
byte、short、char、int、longfloatfloat
byte、short、char、int、long、floatdoubledouble
  1. 强制转换
  • 隐式强制转换

在进行算数操作时,会把结果的类型“隐式”提升为 int 类型,此时再使用 short/byte/char 类型的变量引用时,就会出现“损失精度”

short s=2;
byte b=3;
char c='a';
//隐式强制转换
short s1=s+b+c;
byte b1=s+b+c;
char c1=s+b+c;

运行结果:
在这里插入图片描述

解决方法:

  • 此時可以用int 或字节更大的类型变量来接收运算结果

  • 对运算结果进行强制转换

short s=2;
byte b=3;
char c='a';
//用字节大的来接收,或强制转换
short s2=(short)(s-b+c);
int   i=s-b+c;
  • 显式强制转换
//显式强制转换
int m;
double d=10.51;
m=(int)d;
System.out.println("m="+m);
System.out.println("d="+d);

结果:
在这里插入图片描述

2.引用数据类型

引用数据类型: 类、 接口类型、 数组类型、 枚举类型、 注解类型、 字符串型

所有非基本数据类型都可称为引用数据类型

基本类型与引用类型的区别

基本变量类型

  • 在方法中定义的非全局基本数据类型变量的具体内容是存储在栈中的

引用变量类型

  • 只要是引用数据类型变量,其具体内容都是存放在堆中的,而栈中存放的是其具体内容所在内存的地址

img

//基本数据类型 
int a=100;
double d=1000.0;
boolean b=false;
//引用数据类型
Scanner sc=new Scanner(System.in);
String str=sc.nextLine();

img

三.运算符

1.算数运算符

运算符功能
+1.算数运算 2.连接字符串
-
*
/求商(取整)
%求余/模
++自增
自减
+
int a=10;
short b=10;
String str="abc";
System.out.println(a+b);//算数运算
/*
若 "+"后紧跟字符串,则字符串后的所有"+"都为字符串连接符
字符串前的"+"为算数运算符
*/
System.out.println(str+a+b);
System.out.println(b+a+str+b+a);
System.out.println(a+b+str+b);

运算结果:
在这里插入图片描述

注意:

​ 若 "+"后紧跟字符串,则字符串后的所有"+"都为字符串连接符,将后面的数值转换为字符串进行连接

字符串前的"+"为算数运算符,数值也依旧按照规则运算后再和字符串连接

++ & –

++:

int a=0;
int b=a++;
//先赋值(0),再自增 a=1,b=0;
int c=++a;
//先自增(a++-->a=a+1-->a=1+1=2),再赋值(c=2)
System.out.println("b="+b);
System.out.println("c="+c);

运算结果:

在这里插入图片描述

- - 与++同理.

2.比较运算符

运算符运算范例结果
==相等于4==3false
!=不等于4!=3true
<小于4<3false
>大于4>3true
<=小于等于4<=3false
>=大于等于4>=3true
instanceof检查是否是类的对象“Hello” instanceof Stringtrue

比较运算符的结果都是boolean型(false/true).

3.逻辑运算符

	 逻辑运算符要求操作数的数据类型为逻辑型,其运算结果也是逻辑型值。 

逻辑运算符的真值表

操作数1操作数2短路与短路或逻辑非逻辑异或逻辑与逻辑或
ABA && BA || B! AA BA & BA | B
TTTTFFTT
TFFTFTFT
FTFTTTFT
FFFFTFFF

其中 & | ^ ! 既可参与逻辑运算(false,true) 也可参与位运算(二进制bit位运算 ,eg: 5^10)

逻辑与 | :

左边无论真假,右边都进行运算

短路或 ||:

遇到第一个true发生短路,不再执行||后的语句

逻辑或 & :

左边无论真假,右边都进行运算

短路与 &&:

遇到第一个false发生短路,不再执行&&后的语句

逻辑异或 ^ :

当左右都为true时,结果为false

"异"时为真,"同"时为假

4.赋值运算符

运算符意义实例等价于
=赋值n=25
+=加赋值n += 25n=n+25
-=减赋值n -= 25n=n-25
*=乘赋值n *= 25n=n*25
/=除赋值n /= 25n=n/25
%=求余赋值n %= 25n=n%25
<<=左移位赋值n <<= 25n=n<<25
>>=右移位赋值n >>= 25n=n>>25
&=按位与赋值n &= OxF2F2n=n&OxF2F2
^=按位异或赋值n ^= OxF2F2n=n ^ OxF2F2
|=按位或赋值n |= OxF2F2n=n | OxF2F2

5.条件运算符

条件运算符优先级高于赋值逗号运算符,低于其他运算符

运算符: 条件表达式?(表达式1):(表达式2);

当条件表达式的结果

为true时整个条件表达式结果是表达式1的值

为false时整个条件表达式结果是表达式2 的值

eg. max=(a>b)?a:b 将a和b二者中较大的一个赋给max。

当一个表达式中出现多个条件运算符时,应该将位于最右边的问号与离它最近的冒号配对,并按这一原则正确区分各条件运算符的运算对象。

eg. w < x ? x + w : x < y ? x : y

​ 与 w < x ? x + w : ( x < y ? x : y) 等价

​ 与 (w < x ? x + w : x < y) ? x : y 不等价

​ a > b ? c > d ? e : f : g

​ 与a > b ? (c > d ? e : f) : g等价

6.位运算符

OperatorUsageDescription
按位与a & b在a,b的位表示中,每一个对应的位都为1则返回1, 否则返回0.
按位或a | b在a,b的位表示中,每一个对应的位,只要有一个为1则返回1, 否则返回0.
按位异或a ^ b在a,b的位表示中,每一个对应的位,两个不相同则返回1,相同则返回0.
按位非~ a反转被操作数的位。
左移a << b将a的二进制串向左移动b位,右边移入0.
算术右移a >> b把a的二进制表示向右移动b位,丢弃被移出的所有位 (算术右移左边空出的位是根据最高位是0和1来进行填充的)
无符号右移(左边空出位用0填充)a >>> b把a的二进制表示向右移动b位,丢弃被移出的所有位,并把左边空出的位都填充为0
package p1.OperatorDemo;
import java.util.Scanner;
/*
*   位运算符
*   按位与       &   1&1=1  1&0=0 0&1=0
*   按位或       |   1|1=1  1|0=1 0|1=1
*   按位异或      ^  1^1=0 0^0=0 1^0=1 0^1=1
*   按位取反      ~  二进制按补码各位取反
*   左移         <<
*   (带符号)右移  >>
*   无符号右移    >>>
* */
public class C1_5 {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        System.out.println("输入两个数,得其按位与/或/异或/取反的结果");
        int a=sc.nextInt();
        int b=sc.nextInt();
        // & | ~ ^
        //                                         0010
        //                                         0011

        System.out.println("按位与: "+(a&b));//     0010
        System.out.println("按位或: "+(a|b));//     0011
        System.out.println("按位异或: "+(a^b));//   0001
        System.out.println("按位取反: "+(~++a));//
        System.out.println("按位取反: "+(~b));//
        System.out.println();
        System.out.println("输入一个数,得其左右移运算结果:\r\n");
        int c=sc.nextInt();
        System.out.println("你想左/右移多少位?");
        int x=sc.nextInt();
        System.out.println();
        // 左移 一位 相当于乘2的1次方
        System.out.println("左移: "+(c<<x));
        // (带符号)右移 一位 相当于除2的1次方
        System.out.println("带符号右移: "+(c>>x));
        //无符号右移
        System.out.println("无符号右移:"+(a>>>x));
    }
}

运行结果:

在这里插入图片描述
本人新✋,初来乍到,:✒️此拙作以记录学习中的知识点滴,若能帮助到同在学习的新手,不甚荣幸.若有不对的地方,还请各位大佬斧正,不吝赐教🙏!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值