Java基础语法

Day02Java基础语法

一. 学习目标

1.1 理解标识符的组成规则以及命名约定

1.2 理解关键字的概念和特点

1.3 掌握常量的分类并能够通过代码打印常量

1.4 理解Java中的数据类型的分类

1.5  理解变量的概念和定义格式

1.6 掌握6种运算符的课上案例并能熟练应用

二. 今天主要内容:

2.1 标识符和关键字

2.2 常量

2.3 数据类型

2.4 变量

2.5 运算符

三. 内容讲解

3.1 标识符和关键字(理解)

3.1.1 标识符(记忆、理解)

标识符的概念:

标识符是用户编程时使用的名字,用于给类、方法、变量、常量等命名。

Java中标识符的组成规则:

由字母、数字、下划线“_”、美元符号“$”组成,第一个字符不能是数字。

不能使用java中的关键字作为标识符。

标识符对大小写敏感(区分大小写)。

Java中标识符的命名约定:

小驼峰式命名:变量名、方法名

首字母小写,从第二个单词开始每个单词的首字母大写。

大驼峰式命名:类名

每个单词的首字母都大写。

另外,标识符的命名最好可以做到见名知意

例如:username、studentNumber等。

3.1.2 关键字(理解)

关键字的概念:

关键字是指被java语言赋予了特殊含义的单词。

关键字的特点:

关键字的字母全部小写。

常用的代码编辑器对关键字都有高亮显示,比如现在我们能看到的public、class、static等。

3.2 常量(应用)

常量的概念:

在程序运行过程中,其值不可以发生改变的量。

Java中的常量分类:

字符串常量  用双引号括起来的多个字符(可以包含0个、一个或多个),例如"a"、"abc"、"中国"等

整数常量  整数,例如:-10、0、88等

小数常量  小数,例如:-5.5、1.0、88.88等

字符常量  用单引号括起来的一个字符,例如:'a'、'5'、'B'、'中'等

布尔常量  布尔值,表示真假,只有两个值true和false

空常量  一个特殊的值,空值,值为null

除空常量外,其他常量均可使用输出语句直接输出。

publicclassDemo{

publicstaticvoidmain(String[]args) {

System.out.println(10);// 输出一个整数

System.out.println(5.5);// 输出一个小数

System.out.println('a');// 输出一个字符

System.out.println(true);// 输出boolean值true

System.out.println("欢迎来到黑马程序员");// 输出字符串

   }

}

3.3 数据类型(记忆、应用)

3.3.1 计算机存储单元

我们知道计算机是可以用来存储数据的,但是无论是内存还是硬盘,计算机存储设备的最小信息单元叫“位(bit)”,我们又称之为“比特位”,通常用小写的字母”b”表示。而计算机中最基本的存储单元叫“字节(byte)”,

通常用大写字母”B”表示,字节是由连续的8个位组成。

除了字节外还有一些常用的存储单位,其换算单位如下:

1B(字节) = 8bit

1KB = 1024B

1MB = 1024KB

1GB = 1024MB

1TB = 1024GB

3.3.2 Java中的数据类型

Java是一个强类型语言,Java中的数据必须明确数据类型。在Java中的数据类型包括基本数据类型和引用数据类型两种。

Java中的基本数据类型:

数据类型关键字内存占用取值范围

整数byte1负的2的7次方 ~ 2的7次方-1(-128~127)

short2负的2的15次方 ~ 2的15次方-1(-32768~32767)

int4负的2的31次方 ~ 2的31次方-1

long8负的2的63次方 ~ 2的63次方-1

浮点数float41.401298e-45 ~ 3.402823e+38

double84.9000000e-324 ~ 1.797693e+308

字符char20-65535

布尔boolean1true,false

说明:

e+38表示是乘以10的38次方,同样,e-45表示乘以10的负45次方。

在java中整数默认是int类型,浮点数默认是double类型。

3.4 变量(应用)

3.4.1 变量的定义

变量:在程序运行过程中,其值可以发生改变的量。

从本质上讲,变量是内存中的一小块区域,其值可以在一定范围内变化。

3.4.2 变量的定义格式

数据类型变量名=初始化值;// 声明变量并赋值

intage=18;

System.out.println(age);

或者

// 先声明,后赋值(使用前赋值即可)

数据类型变量名;

变量名=初始化值;

doublemoney;

money=55.5;

System.out.println(money);

还可以在同一行定义多个同一种数据类型的变量,中间使用逗号隔开。但不建议使用这种方式,降低程序的可读性。

inta=10,b=20;// 定义int类型的变量a和b,中间使用逗号隔开

System.out.println(a);

System.out.println(b);

intc,d;// 声明int类型的变量c和d,中间使用逗号隔开

c=30;

d=40;

System.out.println(c);

System.out.println(d);

变量的使用:通过变量名访问即可。

3.4.3 使用变量时的注意事项

在同一对花括号中,变量名不能重复。

变量在使用之前,必须初始化(赋值)。

定义long类型的变量时,需要在整数的后面加L(大小写均可,建议大写)。因为整数默认是int类型,整数太大可能超出int范围。

定义float类型的变量时,需要在小数的后面加F(大小写均可,建议大写)。因为浮点数的默认类型是double, double的取值范围是大于float的,类型不兼容。

3.5 运算符(应用)

3.5.1 算术运算符(理解)

算术运算符和表达式的概念

运算符:对常量或者变量进行操作的符号

表达式:用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式。

                    不同运算符连接的表达式体现的是不同类型的表达式。

举例说明:

inta=10;

intb=20;

intc=a+b;

  +:是运算符,并且是算术运算符。

  a + b:是表达式,由于+是算术运算符,所以这个表达式叫算术表达式。

算术运算符分类:

符号作用说明

+加参看小学一年级

-减参看小学一年级

*乘参看小学二年级,与“×”相同

/除参看小学二年级,与“÷”相同

%取余获取的是两个数据做除法的余数

注意:

/和%的区别:两个数据做除法,/取结果的商,%取结果的余数。

整数操作只能得到整数,要想得到小数,必须有浮点数参与运算。

inta=10;

intb=3;

System.out.println(a/b);// 输出结果3

System.out.println(a%b);// 输出结果1

字符的“+”操作:

char类型参与算术运算,使用的是计算机底层对应的十进制数值。需要我们记住三个字符对应的数值:

'a'  --  97 a-z是连续的,所以'b'对应的数值是98,'c'是99,依次递加

'A'  --  65 A-Z是连续的,所以'B'对应的数值是66,'C'是67,依次递加

'0'  --  48 0-9是连续的,所以'1'对应的数值是49,'2'是50,依次递加

// 可以通过使用字符与整数做算术运算,得出字符对应的数值是多少

charch1='a';

System.out.println(ch1+1);// 输出98,97 + 1 = 98

charch2='A';

System.out.println(ch2+1);// 输出66,65 + 1 = 66

charch3='0';

System.out.println(ch3+1);// 输出49,48 + 1 = 49

算术表达式中包含不同的基本数据类型的值的时候,整个算术表达式的类型会自动进行提升。

提升规则:

byte类型,short类型和char类型将被提升到int类型,不管是否有其他类型参与运算。

整个表达式的类型自动提升到与表达式中最高等级的操作数相同的类型

      等级顺序:byte,short,char --> int --> long --> float --> double

例如:

byteb1=10;

byteb2=20;

// byte b3 = b1 + b2; // 该行报错,因为byte类型参与算术运算会自动提示为int,int赋值给byte可能损失精度

inti3=b1+b2;// 应该使用int接收

byteb3=(byte) (b1+b2);// 或者将结果强制转换为byte类型

-------------------------------

intnum1=10;

doublenum2=20.0;

doublenum3=num1+num2;// 使用double接收,因为num1会自动提升为double类型

tips:正是由于上述原因,所以在程序开发中我们很少使用byte或者short类型定义整数。也很少会使用char类型定义字符,而使用字符串类型,更不会使用char类型做算术运算。

字符串的“+”操作:

当“+”操作中出现字符串时,这个”+”是字符串连接符,而不是算术运算。

System.out.println("itheima"+ 666); // 输出:itheima666

在”+”操作中,如果出现了字符串,就是连接运算符,否则就是算术运算。当连续进行“+”操作时,从左到右逐个执行。

System.out.println(1 + 99 + "年黑马"); // 输出:199年黑马

System.out.println(1 + 2 + "itheima" + 3 + 4); // 输出:3itheima34

// 可以使用小括号改变运算的优先级

System.out.println(1 + 2 + "itheima" + (3 + 4)); // 输出:3itheima7

3.5.2 赋值运算符(应用)

概念:

赋值运算符的作用是将一个表达式的值赋给左边,左边必须是可修改的,不能是常量。

分类:

符号作用说明

=赋值a=10,将10赋值给变量a

+=加后赋值a+=b,将a+b的值给a

-=减后赋值a-=b,将a-b的值给a

*=乘后赋值a*=b,将a×b的值给a

/=除后赋值a/=b,将a÷b的商给a

%=取余后赋值a%=b,将a÷b的余数给a

注意事项:

扩展的赋值运算符隐含了强制类型转换。

short s = 10;

s = s + 10; // 此行代码报出,因为运算中s提升为int类型,运算结果int赋值给short可能损失精度

s += 10; // 此行代码没有问题,隐含了强制类型转换,相当于 s = (short) (s + 10);

3.5.3 自增自减运算符(理解)

概念:

符号作用说明

++自增变量的值加1

--自减变量的值减1

注意事项:

++和-- 既可以放在变量的后边,也可以放在变量的前边。

单独使用的时候, ++和-- 无论是放在变量的前边还是后边,结果是一样的。

参与操作的时候,如果放在变量的后边,先拿变量参与操作,后拿变量做++或者--。

参与操作的时候,如果放在变量的前边,先拿变量做++或者--,后拿变量参与操作。

最常见的用法:单独使用。

int i = 10;

i++; // 单独使用

System.out.println("i:" + i); // i:11

int j = 10;

++j; // 单独使用

System.out.println("j:" + j); // j:11

int x = 10;

int y = x++; // 赋值运算,++在后边,所以是使用x原来的值赋值给y,x本身自增1

System.out.println("x:" + x + ", y:" + y); // x:11,y:10

int m = 10;

int n = ++m; // 赋值运算,++在前边,所以是使用m自增后的值赋值给n,m本身自增1

System.out.println("m:" + m + ", m:" + m); // m:11,m:11

练习:

int x = 10;

int y = x++ + x++ + x++;

System.out.println(y); // y的值是多少?

/*

解析,三个表达式都是++在后,所以每次使用的都是自增前的值,但程序自左至右执行,所以第一次自增时,使用的是10进行计算,但第二次自增时,x的值已经自增到11了,所以第二次使用的是11,然后再次自增。。。

所以整个式子应该是:int y = 10 + 11 + 12;

输出结果为33。

*/

注意:通过此练习深刻理解自增和自减的规律,但实际开发中强烈建议不要写这样的代码!小心挨打!

3.5.4 关系运算符(应用)

分类:

关系运算符有6种关系,分别为小于、小于等于、大于、等于、大于等于、不等于。

符号说明

==a==b,判断a和b的值是否相等,成立为true,不成立为false

!=a!=b,判断a和b的值是否不相等,成立为true,不成立为false

>a>b,判断a是否大于b,成立为true,不成立为false

>=a>=b,判断a是否大于等于b,成立为true,不成立为false

<a<b,判断a是否小于b,成立为true,不成立为false

<=a<=b,判断a是否小于等于b,成立为true,不成立为false

注意事项:

关系运算符的结果都是boolean类型,要么是true,要么是false。

千万不要把“==”误写成“=”,"=="是判断是否相等的关系,"="是赋值。

int a = 10;

int b = 20;

System.out.println(a == b); // false

System.out.println(a != b); // true

System.out.println(a > b); // false

System.out.println(a >= b); // false

System.out.println(a < b); // true

System.out.println(a <= b); // true

// 关系运算的结果肯定是boolean类型,所以也可以将运算结果赋值给boolean类型的变量

boolean flag = a > b;

System.out.println(flag); // 输出false

3.5.5 逻辑运算符(应用)

概念:

逻辑运算符把各个运算的关系表达式连接起来组成一个复杂的逻辑表达式,以判断程序中的表达式是否成立,判断的结果是 true 或 false。

分类:

符号作用说明

&逻辑与a&b,a和b都是true,结果为true,否则为false

|逻辑或a|b,a和b都是false,结果为false,否则为true

^逻辑异或a^b,a和b结果不同为true,相同为false

!逻辑非!a,结果和a的结果正好相反

//定义变量

int i = 10;

int j = 20;

int k = 30;

//& “与”,并且的关系,只要表达式中有一个值为false,结果即为false

System.out.println((i > j) & (i > k)); //false & false,输出false

System.out.println((i < j) & (i > k)); //true & false,输出false

System.out.println((i > j) & (i < k)); //false & true,输出false

System.out.println((i < j) & (i < k)); //true & true,输出true

System.out.println("--------");

//| “或”,或者的关系,只要表达式中有一个值为true,结果即为true

System.out.println((i > j) | (i > k)); //false | false,输出false

System.out.println((i < j) | (i > k)); //true | false,输出true

System.out.println((i > j) | (i < k)); //false | true,输出true

System.out.println((i < j) | (i < k)); //true | true,输出true

System.out.println("--------");

//^ “异或”,相同为false,不同为true

System.out.println((i > j) ^ (i > k)); //false ^ false,输出false

System.out.println((i < j) ^ (i > k)); //true ^ false,输出true

System.out.println((i > j) ^ (i < k)); //false ^ true,输出true

System.out.println((i < j) ^ (i < k)); //true ^ true,输出false

System.out.println("--------");

//! “非”,取反

System.out.println((i > j)); //false

System.out.println(!(i > j)); //!false,,输出true

短路逻辑运算符

符号作用说明

&&短路与作用和&相同,但是有短路效果

||短路或作用和|相同,但是有短路效果

在逻辑与运算中,只要有一个表达式的值为false,那么结果就可以判定为false了,没有必要将所有表达式的值都计算出来,短路与操作就有这样的效果,可以提高效率。同理在逻辑或运算中,一旦发现值为true,右边的表达式将不再参与运算。

逻辑与&,无论左边真假,右边都要执行。

短路与&&,如果左边为真,右边执行;如果左边为假,右边不执行。

逻辑或|,无论左边真假,右边都要执行。

短路或||,如果左边为假,右边执行;如果左边为真,右边不执行。

int x = 3;

int y = 4;

System.out.println((x++ > 4) & (y++ > 5)); // 两个表达都会运算

System.out.println(x); // 4

System.out.println(y); // 5

System.out.println((x++ > 4) && (y++ > 5)); // 左边已经可以确定结果为false,右边不参与运算

System.out.println(x); // 4

System.out.println(y); // 4

3.5.6 三元运算符(理解)

三元运算符语法格式:

关系表达式 ? 表达式1 : 表达式2;

解释:问号前面的位置是判断的条件,判断结果为boolean型,为true时调用表达式1,为false时调用表达式2。其逻辑为:如果条件表达式成立或者满足则执行表达式1,否则执行第二个。

举例:

int a = 10;

int b = 20;

int c = a > b ? a : b; // 判断 a>b 是否为真,如果为真取a的值,如果为假,取b的值

三元运算符案例:

1、需求:动物园里有两只老虎,已知两只老虎的体重分别为180kg、200kg,请用程序实现判断两只老虎的体重是否相同。

public class OperatorTest01 {

public static void main(String[] args) {

//1:定义两个变量用于保存老虎的体重,单位为kg,这里仅仅体现数值即可。

int weight1 = 180;

int weight2 = 200;

//2:用三元运算符实现老虎体重的判断,体重相同,返回true,否则,返回false。

boolean b = weight1 == weight2 ? true : false;

//3:输出结果

System.out.println("b:" + b);

}

}

2、需求:一座寺庙里住着三个和尚,已知他们的身高分别为150cm、210cm、165cm,请用程序实现获取这三个和尚的最高身高。

public class OperatorTest02 {

public static void main(String[] args) {

//1:定义三个变量用于保存和尚的身高,单位为cm,这里仅仅体现数值即可。

int height1 = 150;

int height2 = 210;

int height3 = 165;

//2:用三元运算符获取前两个和尚的较高身高值,并用临时身高变量保存起来。

int tempHeight = height1 > height2 ? height1 : height2;

//3:用三元运算符获取临时身高值和第三个和尚身高较高值,并用最大身高变量保存。

int maxHeight = tempHeight > height3 ? tempHeight : height3;

//4:输出结果

System.out.println("maxHeight:" + maxHeight);

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,029评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,395评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,570评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,535评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,650评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,850评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,006评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,747评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,207评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,536评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,683评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,342评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,964评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,772评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,004评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,401评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,566评论 2 349

推荐阅读更多精彩内容

  • 1 关键字 1.1 关键字的概述 Java的关键字对java的编译器有特殊的意义,他们用来表示一种数据类型,或...
    哈哈哎呦喂阅读 646评论 0 0
  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom阅读 2,694评论 0 3
  • 一、内存分析(栈) 二、注释:comment 注释的作用:帮助开发人员更好的理解记忆程序的。 java 中支持三种...
    fe0180bd6eaf阅读 460评论 2 0
  • Win7下如何打开DOS控制台? a:开始--所有程序--附件--命令提示符 b:开始--搜索程序和文件--cmd...
    逍遥叹6阅读 1,590评论 4 12
  • 第一章 初识javaJAVA 第一讲:什么是程序?:为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令的...
    人子日月几点阅读 510评论 0 1