关键字与保留字

关键字

定义:被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. .NET平台系列5 .NET Core 简介

    系列目录     [已更新最新开发文章,点击查看详细] 自1995年互联网战略日以来最雄心勃勃的事业 -- 微软.NET战略, 2000年6月30日. 微软公司于2002年2月13日正式推出第一代.N ...

  2. Elasticsearch入门,看这一篇就够了

    目录 前言 可视化工具 kibana kibana 的安装 kibana 配置 kibana 的启动 Elasticsearch 入门操作 操作 index 创建 index 索引别名有什么用 删除索 ...

  3. opencv实战——图像矫正算法深入探讨

    摘要 在机器视觉中,对于图像的处理有时候因为放置的原因导致ROI区域倾斜,这个时候我们会想办法把它纠正为正确的角度视角来,方便下一步的布局分析与文字识别,这个时候通过透视变换就可以取得比较好的裁剪效果 ...

  4. 3D教育类小图标_三维立体学习类icon图标素材

    3D教育类小图标_三维立体学习类icon图标素材

  5. 『动善时』JMeter基础 — 14、使用JMeter发送Post请求

    目录 1.Post请求参数类型说明 2.用于演示的项目说明 3.发送Post请求示例 (1)测试计划内包含的元件 (2)请求参数类型为x-www-form-urlencoded 4.请求参数form- ...

  6. CRM系统实施中如何避免“踩雷”

    CRM系统实施后,效果没有达到预期是很多企业出现的情况.而最主要的原因就是在实施之前没有足够的思考和相应的计划.那么,企业应如何避免CRM系统实施时"踩雷"?这里有几条建议希望可以 ...

  7. SpringBoot整合shiro系列-SpingBoot是如何将shiroFilter注册到servlet容器中的

    一.先从配置类入手,主要是@Bean了一个ShiroFilterFactoryBean: @Data @Configuration @Slf4j @EnableConfigurationPropert ...

  8. hive beeline详解

    Hive客户端工具后续将使用Beeline 替代HiveCLI ,并且后续版本也会废弃掉HiveCLI 客户端工具,Beeline是 Hive 0.11版本引入的新命令行客户端工具,它是基于SQLLi ...

  9. 用urllib库几行代码实现最简单爬虫

    """ 使用urllib.request()请求一个网页内容,并且把内容打印出来. """ from urllib import reque ...

  10. zabbix监控之用户及用户组

    一.概述 Zabbix 中的所有用户都通过 Web 前端去访问 Zabbix 应用程序.并为每个用户分配唯一的登陆名和密码. 所有用户的密码都被加密并储存于 Zabbix 数据库中.用户不能使用其用户 ...