关键字与保留字

关键字

定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词)

特点:关键字中所有字母都为小写

官方地址:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html

保留字

Java保留字:现有Java版本尚未使用,但以后版本可能会作为关键字使用。自己命名标识符时要避免使用这些保留字。

goto 、const

标识符(Identifier)

Java 对各种变量、方法和类等要素命名时使用的字符序列称为标识符。

凡是自己可以起名字的地方都叫标识符。

定义合法标识符规则:

  1. 由26个英文字母大小写,0-9 ,_或 $ 组成
  2. 数字不可以开头。
  3. 不可以使用关键字和保留字,但能包含关键字和保留字。
  4. Java中严格区分大小写,长度无限制。
  5. 标识符不能包含空格。

Java中的名称命名规范

包名:多单词组成时所有字母都小写:xxxyyyzzz

类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz

变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz

常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ

注意1:在起名字时,为了提高阅读性,要尽量有意义,“见名知意”。

注意2:java采用unicode字符集,因此标识符也可以使用汉字声明,但是不建议使用。

变量

变量的概念:

内存中的一个存储区域

该区域的数据可以在同一类型范围内不断变化

变量是程序中最基本的存储单元。包含变量类型、变量名和存储的值 。

变量的作用:

用于在内存中保存数据

使用变量注意:

  1. Java中每个变量必须先声明,后使用
  2. 使用变量名来访问这块区域的数据
  3. 变量的作用域:其定义所在的一对{ }内
  4. 变量只有在其作用域内才有效
  5. 同一个作用域内,不能定义重名的变量

声明变量

语法:<数据类型> <变量名称>

例如:int var;

变量的赋值

语法:<变量名称> = <值>

例如:var = 10;

声明和赋值变量

语法: <数据类型> <变量名> = <初始化值>

例如:int var = 10;

class VariableTest {
public static void main(String[] args){
//变量的定义
int myAge = 12;
//变量的使用
System.out.println(myAge); //变量的声明
int myNumber;
//变量的赋值
myNumber=1997;
//变量的使用
System.out.println(myNumber);
}
}
输出
12
1997

变量的分类-按数据类型

对于每一种数据都定义了明确的具体数据类型(强类型语言),在内存中分配了不同大小的内存空间。

整数类型:byte、short、int、long

Java各整数类型有固定的表数范围和字段长度,不受具体OS的影响,以保 证java程序的可移植性。

java的整型常量默认为 int 型,声明long型常量须后加‘l’或‘L’

java程序中变量通常声明为int型,除非不足以表示较大的数,才使用long

class VariableTest1{
public static void main(String[]args){
byte b1 = 24;
byte b2 = -128;
//b2=128; 编译不通过,byte类型-128~127
System.out.println(b1);
System.out.println(b2);
short s1=128;
int s2=1234;
long s3=12345678L;
System.out.println(s1);
System.out.println(s2);
//声明:long型变量,必须以“l”或“L”结尾
System.out.println(s3);
}
}
输出
24
-128
128
1234
12345678

浮点类型:float、double

与整数类型类似,Java 浮点类型也有固定的表数范围和字段长度,不受具体操作系统的影响。

浮点型常量有两种表示形式:

十进制数形式:如:5.12 512.0f .512 (必须有小数点)

科学计数法形式:如:5.12e2 512E2 100E-2

float:单精度,尾数可以精确到7位有效数字。很多情况下,精度很难满足需求。

double:双精度,精度是float的两倍。通常采用此类型。

class VariableTest1{
public static void main(String[]args){
double s1 = 123.3;
System.out.println(s1);
//定义float类型值的末尾要以‘f’或‘F’结尾
float s2 = 12.3F;
System.out.println(s2);
}
}
输出
123.3
12.3

字符类型:char

char 型数据用来表示通常意义上“字符”(2字节)

Java中的所有字符都使用Unicode编码,故一个字符可以存储一个字母,一个汉字,或其他书面语的一个字符。

字符型变量的三种表现形式:

  1. 字符常量是用单引号(‘ ’)括起来的单个字符。例如:char c1 = 'a'; char c2= '中'; char c3 = '9';
  2. Java中还允许使用转义字符‘\’来将其后的字符转变为特殊字符型常量。例如:char c3 = ‘\n’; // '\n'表示换行符。
  3. 直接使用 Unicode 值来表示字符型常量:‘\uXXXX’。其中,XXXX代表一个十六进制整数。如:\u000a 表示\n。

char类型是可以进行运算的。因为它都对应有Unicode码。

class VariableTest1{
public static void main(String[]args){
char c1 = 'a';
System.out.println(c1);
char c2 = '中';
System.out.println(c2);
}
}
输出
a

转义字符

布尔类型:boolean

boolean类型数据只允许取值true和false,无null。

boolean 类型用来判断逻辑条件,一般用于程序流程控制:

if条件控制语句;

while循环控制语句;

do-while循环控制语句;

for循环控制语句;

变量的分类-按声明的位置的不同

在方法体外,类体内声明的变量称为****成员变量。

在方法体内部声明的变量称为****局部变量。

二者在初始化值方面的异同:

同:都有生命周期

异:局部变量除形参外,需显式初始化。

基本数据类型转换

前提:boolean类型不能与其它数据类型运算。

自动类型提升

容量小的类型自动转换为容量大的数据类型。数据类型按容 量大小排序为:(容量的大小表示数的范围的大小)

byte,short,char之间不会相互转换,他们三者在计算时首先转换为int类型。

class  VariableTest2{
public static void main(String[] args) {
byte b1 = 2;
int i1 = 129;
//byte i2 = b1 + i1; 解析不通过
int i2 = b1 + i1; //使用容量较大的类型int
System.out.println(i2);
}
}
输出
131

强制类型转换

自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符:(),但可能造成精度降低或溢出,格外要注意。

class  VariableTest2{
public static void main(String[] args) {
double d1 = 12.3;
int i1 = (int)d1; //使用强转符(),截断操作损失精度
System.out.println(i1);
}
}
输出
12

字符串类型:String

String不是基本数据类型,属于引用数据类型,声明String变量的是,使用一对双引号""

一个字符串可以串接另一个字符串,也可以直接串接其他类型的数据。例如:

str = str + “xyz” ;
int n = 100;
str = str + n;

String类型可以和八种基本数据类型进行运算,且只能是连接运算,运算结果仍然是String类型。

class VariableTest2{
public static void main(String[] args){
String numberStr = "学号:";
int number = 1997;
String info = numberStr + number;
System.out.println(numberStr + number);
}
}
输出
学号:1997

String类型索引、长度

String a = "12345";
//获取字符串的长度
int long = a.length();
//索引指定位置的字符
char b = a.charAt(0);

获取指定索引的数字,并且用来运算

可以使用字符减去字符0,获得编码的差

String a = "12345";
char b = a.charAt(2);
int num = b - '0';
输出
3

比较字符串是否相等

String a = "yes";
String b = "no";
boolean c = a.equals(b);
System.out.println(c);
输出
false

进制

所有数字在计算机底层都以二进制形式存在。

二进制(binary):0,1 ,满2进1.以0b或0B开头。

十进制(decimal):0-9 ,满10进1。

八进制(octal):0-7 ,满8进1. 以数字0开头表示。

十六进制(hex):0-9及A-F,满16进1. 以0x或0X开头表示。此处的A-F不区分大小写。如:0x21AF +1= 0X21B0

二进制转换十进制,以及负数的原码、反码、补码

计算机底层都以补码的方式存储数据!

运算符

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

算术运算符

除法运算

class AriTest {
public static void main(String[] args) {
int num1 = 12;
int num2 = 5;
int result1 = num1 / num2;
System.out.println(result1);
int result2 = num1 / num2 * num2;
System.out.println(result2);
double result3 = num1 / (num2 + 0.0);
System.out.println(result3);
double result4 = (double)num1 / num2;
System.out.println(result4);
}
}
输出
2
10
2.4
2.4

取模运算

结果的符号与被模数相同。

class AriTest {
public static void main(String[] args) {
int a1 = 12;
int b1 = 5;
System.out.println(a1 % b1);
int a2 = -12;
int b2 = 5;
System.out.println(a2 % b2);
int a3 = 12;
int b3 = -5;
System.out.println(a3 % b3);
int a4 = -12;
int b4 = -5;
System.out.println(a4 % b4);
}
}
输出
2
-2
2
-2

前++和后++

不会改变本身的数据类型。

class AriTest {
public static void main(String[] args) {
int a1 = 10;
int b1 = ++a1;
System.out.println("a1=" + a1 + "b1=" + b1);//先自增1再赋值
int a2 = 10;
int b2 = a2++;
System.out.println("a2=" + a2 + "b2=" + b2);//先赋值再自加1
}
}
输出
a1=11b1=11
a2=11b1=10

练习:

随意给出一个整数,打印显示它的个位数,十位数,百位数的值。

格式如下:

数字xxx的情况如下:

个位数:

十位数:

百位数:

例如:

数字153的情况如下:

个位数:3

十位数:5

百位数:1

class AriTest {
public static void main(String[] args) {
int num = 153;
int unit = num % 10;
int decade = num / 10 % 10;
int hundred = num / 100;
System.out.println("个位是:" + unit + '\n' +
"十位是:" + decade + '\n' +
"百位是:" + hundred);
}
}
输出
个位是:3
十位是:5
百位是:1

赋值运算符

符号:=

当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理。

支持连续赋值。

赋值的方法:

class AriTest {
public static void main(String[] args) {
//赋值符号:=
int i1 = 10;
int j1 = 10;
//连续赋值
int i2 = 10;
int j2 = 10;
//赋值两个不同的值
int i3 = 10,j3 = 20;
}
}

扩展赋值运算符: +=, -=, *=, /=, %=

class AriTest {
public static void main(String[] args) {
int i1 = 10;
i1 += 2; //i1 = i1 + 2
System.out.println(i1);
short s1 = 10;
s1 += 5; //不会改变变量本身的数据类型
System.out.println(s1);
}
}
输出
12
15

比较运算符

逻辑运算符

变量的类型全部都是boolean类型的

区分&和&&:

相同点:

1、&和&&运算的结果相同

2、当符号左边是true时,都会运行符号右边的运算

不同点:

当符号左边是false时,&符号右边的运算继续执行,&&右边的运算不再执行。

区别 |和||:

相同点:

1、|和||运算的结果相同

2、当符号左边是false时,都会执行符号右边的运算

不同点:

当符号左边是true时,|符号右边的运算继续执行,||右边的运算不再执行。

位运算符

结论:

1、位运算符操作的都是整形数据

1、<<每向左移一位,相当于*2

2、>>每向右移一位,相当于/2

面试题:

1、最高效的计算2*8? 答:2 << 3或8 << 1

2、int num1 = 10;

int num2 = 20; // 交换两个变量的值。

class AriTest {
public static void main(String[] args) {
int num1 = 10;
int num2 = 20;
int temp = num1;
num1 = num2;
num2 = temp;
System.out.println("num1 = " + num1 + ",num2 = " + num2);
}
}
输出
num1 = 20,num2 = 10

或者使用位运算符^,k = m^n, m= k^n = (mn)n

class AriTest {
public static void main(String[] args) {
int num1 = 10;
int num2 = 20;
int temp = num1 ^ num2;
num2 = temp ^ num2;
num1 = temp ^ num1;
System.out.println("num1 = " + num1 + ",num2 = " + num2);
}
}
输出
num1 = 20,num2 = 10

三元运算符

格式:

说明:

1、条件表达式的结果为boolean类型

2、根据条件表达式的结果为ture或false,决定执行表达式1,还是表达式2

如果结果为true,则执行表达式1

如果结果为false,则执行表达式2

3、表达式1和表达式2类型要求是一致的

4、三元运算符可以嵌套使用

5、凡是可以使用三元运算符的地方,都可以改写为if...else...

class SanYuanTest{
public static void main(String[] args) {
//获取两个数的较大值
int m = 12;
int n = 5;
int max = (m > n)? m : n;
System.out.println(max);
}
}
输出
12

嵌套

class SanYuanTest{
public static void main(String[] args){
int m = 12;
int n = 18;
String max = (m > n)? "m大" : ((m == n)? "m等于n" : "n大");
System.out.println(max);
}
}
输出
n大

运算符的优先级

2、java基础语法(上):变量与运算符的更多相关文章

  1. Java基础语法01——变量与运算符

    本文是对Java基础语法的第一部分的学习,包括注释:标识符的命名规则与规范:变量的数据类型分类以及转换:以及六种运算符(算术.赋值.比较.逻辑.三元和位运算符).

  2. 第2章 Java基本语法(上): 变量与运算符

    2-1 关键字与保留字 关键字(keyword) 保留字(reserved word) 2-2 标识符(Identifier) 案例 class Test{ public static void ma ...

  3. JAVA学习(三):Java基础语法(变量、常量、数据类型、运算符与数据类型转换)

    Java基础语法(变量.常量.数据类型.运算符与数据类型转换) 1.变量 Java中.用户能够通过指定数据类型和标识符来声明变量.其基本的语法为: DataType identifier; 或 Dat ...

  4. Java基础语法(2)-变量

    title: Java基础语法(2)-变量 blog: CSDN data: Java学习路线及视频 1.什么是变量? 变量的概念 内存中的一个存储区域 该区域的数据可以在同一类型范围内不断变化 变量 ...

  5. Java基础二(变量、运算符)

    1.变量2.运算符 ###01变量概述 * A: 什么是变量? * a: 变量是一个内存中的小盒子(小容器),容器是什么?生活中也有很多容器,例如水杯是容器,用来装载水:你家里的大衣柜是容器,用来装载 ...

  6. Java基础语法(上)

    Java编译报错出现非法字符,原因是存在中文字符. Java关键字的字母都是小写. Java是一种强类型语言,针对每一种数据都给出了明确的数据类型. 数据类型分类: A:基本数据类型 B:引用数据类型 ...

  7. Java基础语法:变量与常量

    一.命名规范 所有变量.常量.方法.类 都使用英文单词 命名,要见名知意. 所有变量.方法 的命名都使用小驼峰法 :首字母小写的驼峰命名法.例如:sampleText 类 的命名都使用大驼峰法 :首字 ...

  8. Java基础语法(4)-流程控制

    title: Java基础语法(4)-流程控制 blog: CSDN data: Java学习路线及视频 1.程序流程控制 流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定 ...

  9. Java基础语法(5)-特殊流程控制语句

    title: Java基础语法(5)-特殊流程控制语句 blog: CSDN data: Java学习路线及视频 1.嵌套循环结构 将一个循环放在另一个循环体内,就形成了嵌套循环.其中,for ,wh ...

  10. JavaSE入门学习6:Java基础语法之运算符和语句(上)

    继续接着上篇:JavaSE入门学习5:Java基础语法(一)来看Java的基础语法. 五运算符 运算符是一种"功能"符号,用以通知Java进行相关的运算.比方.我们须要将变量age ...

随机推荐

  1. IDEA 导入Springboot 项目:

    更多精彩关注公众号: IDEA 导入Springboot 项目: 1. 菜单->File->New->Project From Existing Sources 2. 选中项目中的p ...

  2. C++ primer plus读书笔记——第12章 类和动态内存分配

    第12章 类和动态内存分配 1. 静态数据成员在类声明中声明,在包含类方法的文件中初始化.初始化时使用作用域运算符来指出静态成员所属的类.但如果静态成员是整形或枚举型const,则可以在类声明中初始化 ...

  3. 《前端运维》一、Linux基础--02用户与权限

    其实说真的,这些基础挺枯燥的,内容呢绝大多数都是些静态的. 上一篇文章我们学习了基本的指令和vim编辑器的操作方法.这篇文章我们主要来学习下Linux中用户的概念和权限相关的知识. 一.用户与用户组 ...

  4. memcache 和 redis 的区别

    1)Redis中,并不是所有的数据都一直存储在内存中的,这是和Memcache相比一个最大的区别.2)Redis在很多方面具备数据库的特征,或者说就是一个数据库系统,而Memcache只是简单的K/V ...

  5. SQLFlow的几种关系

    SQLFlow的几种关系 SQLFlow可以用来分析各种数据对象之间的依赖关系,其中包含了fdd, fdr, frd, join 四种关系 fdd:表示数据从源列到目标列的关系 frd:表示结果集返回 ...

  6. 驰骋CCFlow开源工作流程引擎如何设置PDF打印

    前言 经常有驰骋CCFlow爱好者朋友提问关于打印相关问题.在这篇博文中大家介绍一下工作流引擎CCFlow的HTML打印和PDF打印,针对Java版本和.NET版本有不同的操作步骤,包括开关设置.水印 ...

  7. 【转载】在Linux系统下用dd命令制作ISO镜像U盘启动盘

    #### 将U盘插入USB接口 #umount /dev/sdb* #dd if=/iso存放路径/XXX.iso of=/dev/sdb bs=1M ##### [转载]在Linux系统下用dd命令 ...

  8. IT菜鸟之思科模拟实验(PT)

    思科官方的模拟软件:cisco packet tracer 网卡端口类型: Ethernet(以太网) 十兆 FastEthernet 百兆 GigabitEthernet 千兆 交换机的端口默认都是 ...

  9. 提高IO输出速度

    用DMA内存到内存的模式,直接把Gpio_data的数据循环的搬到GPIOC的BSRR寄存器上来控制GPIOC上电平的翻转,这样使得GPIO的速度达到了最快,输出70ns的脉宽,这已经是达到了DMA总 ...

  10. kylin的rowkey优化之按维度分片

    我们知道,系统会对cuboid的数据进行分片处理. 但是默认的分片策略是随机的,如果group by a,b 的查询命中了某个cuboid,但是a=1 and b=1 的两条数据在不同的机器上存储, ...