【黑马程序员】JAVA基础语法
2015-11-16 20:08
441 查看
/* 比较运算符: ==,!=,>,>=,<,<= 特点: 无论你的操作是简单还是复杂,结果是boolean类型。 注意事项: "=="不能写成"="。 */ class OperatorDemo { public static void main(String[] args) { int x = 3; int y = 4; int z = 3; System.out.println(x == y); System.out.println(x == z); System.out.println((x+y) == (x+z)); System.out.println("------------"); System.out.println(x != y); System.out.println(x > y); System.out.println(x >= y); System.out.println(x < y); System.out.println(x <= y); System.out.println("------------"); int a = 10; int b = 20; //boolean flag = (a == b); //boolean flag = (a = b); //这个是有问题的,不兼容的类型 //System.out.println(flag); int c = (a = b); //把b赋值给a,然后把a留下来 System.out.println(c); } }
/* 逻辑运算符: &,|,^,! &&,|| 特点: 逻辑运算符一般用于连接boolean类型的表达式或者值。 表达式:就是用运算符把常量或者变量连接起来的符合java语法的式子。 算术表达式:a + b 比较表达式:a == b 结论: &逻辑与:有false则false。 |逻辑或:有true则true。 ^逻辑异或:相同为false,不同为true。 举例:情侣关系。男男,男女,女男,女女 !逻辑非:非false则true,非true则false。 特点:偶数个不改变本身。 */ class OperatorDemo { public static void main(String[] args) { int a = 3; int b = 4; int c = 5; //&逻辑与 System.out.println((a > b) & (a > c)); //false & false = false System.out.println((a > b) & (a < c)); //false & true = false System.out.println((a < b) & (a > c)); //true & false = false System.out.println((a < b) & (a < c)); //true & true = true System.out.println("---------------"); //|逻辑或 System.out.println((a > b) | (a > c)); //false | false = false System.out.println((a > b) | (a < c)); //false | true = true System.out.println((a < b) | (a > c)); //true | false = true System.out.println((a < b) | (a < c)); //true | true = true System.out.println("---------------"); //^逻辑异或 System.out.println((a > b) ^ (a > c)); //false ^ false = false System.out.println((a > b) ^ (a < c)); //false ^ true = true System.out.println((a < b) ^ (a > c)); //true ^ false = true System.out.println((a < b) ^ (a < c)); //true ^ true = false System.out.println("---------------"); //!逻辑非 System.out.println(!(a > b)); //!false = true System.out.println(!(a < b)); //!true = false System.out.println(!!(a > b)); //!!false = false System.out.println(!!!(a > b)); //!!false = true } }
* 单目运算符:~3 双目运算符:3 + 4 三目运算符: 格式:比较表达式?表达式1:表达式2; 比较表达式:结果是一个boolean类型。 执行流程: 根据比较表达式的计算返回一个true或者false。 如果是true,就把表达式1作为结果。 如果是false,就把表达式2作为结果。 */ class OperatorDemo { public static void main(String[] args) { int x = 100; int y = 200; int z = ((x > y)? x: y); //int z = ((x < y)? x: y); //int z = ((x == y)? x: y); //报错 //int z = ((x = y)? x : y); System.out.println("z:"+z); } }
/* 为了让程序的数据更符合开发的数据,我们就加入了键盘录入。 让程序更灵活一下。 那么,我们如何实现键盘数据的录入呢? A:导包 格式: import java.util.Scanner; 位置: 在class上面。 B:创建键盘录入对象 格式: Scanner sc = new Scanner(System.in); C:通过对象获取数据 格式: int x = sc.nextInt(); */ import java.util.Scanner; class ScannerDemo { public static void main(String[] args) { //创建键盘录入数据对象 Scanner sc = new Scanner(System.in); System.out.println("请你输入一个数据:"); int x = sc.nextInt(); System.out.println("你输入的数据是:"+x); } }
1:关键字(掌握)
(1)被Java语言赋予特定含义的单词
(2)特点:
全部小写。
(3)注意事项:
A:goto和const作为保留字存在。
B:类似于Notepad++这样的高级记事本会对关键字有特殊颜色标记
2:标识符(掌握)
(1)就是给类,接口,方法,变量等起名字的字符序列
(2)组成规则:
A:英文大小写字母
B:数字
C:$和_
(3)注意事项:
A:不能以数字开头
B:不能是java中的关键字
C:区分大小写
(4)常见的命名规则(见名知意)
A:包 全部小写
单级包:小写
举例:liuyi,com
多级包:小写,并用.隔开
举例:cn.itcast,com.baidu
B:类或者接口
一个单词:首字母大写
举例:Student,Demo
多个单词:每个单词首字母大写
举例:HelloWorld,StudentName
C:方法或者变量
一个单词:首字母小写
举例:name,main
多个单词:从第二个单词开始,每个单词首字母大写
举例:studentAge,showAllNames()
D:常量
全部大写
一个单词:大写
举例:PI
多个单词:大写,并用_隔开
举例:STUDENT_MAX_AGE
3:注释(掌握)
(1)就是对程序进行解释说明的文字
(2)分类:
A:单行注释 //
B:多行注释 /**/
C:文档注释(后面讲) /** */
(3)把HelloWorld案例写了一个带注释的版本。
后面我们要写一个程序的过程。
需求:
分析:
实现:
代码体现:
(4)注释的作用
A:解释说明程序,提高了代码的阅读性。
B:可以帮助我们调试程序。
后面我们会讲解一个更高端的一个调试工具
4:常量(掌握)
(1)在程序执行的过程中,其值不发生改变的量
(2)分类:
A:字面值常量
B:自定义常量(后面讲)
(3)字面值常量
A:字符串常量 "hello"
B:整数常量 12,23
C:小数常量 12.345
D:字符常量 'a','A','0'
E:布尔常量 true,false
F:空常量 null(后面讲)
(4)在Java中针对整数常量提供了四种表现形式
A:二进制 由0,1组成。以0b开头。
B:八进制 由0,1,...7组成。以0开头。
C:十进制 由0,1,...9组成。整数默认是十进制。
D:十六进制 由0,1,...9,a,b,c,d,e,f(大小写均可)组成。以0x开头。
5:进制转换(了解)
(1)其他进制到十进制
系数:就是每一个位上的数值
基数:x进制的基数就是x
权:对每一个位上的数据,从右,并且从0开始编号,对应的编号就是该数据的权。
结果:系数*基数^权次幂之和。
(2)十进制到其他进制
除基取余,直到商为0,余数反转。
(3)进制转换的快速转换法
A:十进制和二进制间的转换
8421码。
B:二进制到八进制,十六进制的转换
6:变量(掌握)
(1)在程序的执行过程中,其值在某个范围内可以发生改变的量
(2)变量的定义格式:
A:数据类型 变量名 = 初始化值;
B:数据类型 变量名;
变量名 = 初始化值;
7:数据类型(掌握)
(1)Java是一种强类型语言,针对每种数据都提供了对应的数据类型。
(2)分类:
A:基本数据类型:4类8种
B:引用数据类型:类,接口,数组。
(3)基本数据类型
A:整数 占用字节数
byte 1
short 2
int 4
long 8
B:浮点数
float 4
double 8
C:字符
char 2
D:布尔
boolean 1
注意:
整数默认是int类型,浮点数默认是double。
长整数要加L或者l。
单精度的浮点数要加F或者f。
8:数据类型转换(掌握)
(1)boolean类型不参与转换
(2)默认转换
A:从小到大
B:byte,short,char -- int -- long -- float -- double
C:byte,short,char之间不相互转换,直接转成int类型参与运算。
(3)强制转换
A:从大到小
B:可能会有精度的损失,一般不建议这样使用。
C:格式:
目标数据类型 变量名 = (目标数据类型) (被转换的数据);
(4)思考题和面试题:
A:下面两种方式有区别吗?
float f1 = 12.345f;
float f2 = (float)12.345;
B:下面的程序有问题吗,如果有,在哪里呢?
byte b1 = 3;
byte b2 = 4;
byte b3 = b1 + b2;
byte b4 = 3 + 4;
C:下面的操作结果是什么呢?
byte b = (byte)130;
D:字符参与运算
是查找ASCII里面的值
'a' 97
'A' 65
'0' 48
System.out.println('a');
System.out.println('a' + 1);
E:字符串参与运算
这里其实是字符串的连接
System.out.println("hello"+'a'+1);
System.out.println('a'+1+"hello");
System.out.println("5+5="+5+5);
System.out.println(5+5+"=5+5");
/* 关键字:被java语言赋予特定含义的单词。 特点:组成关键字单词的字母全部小写。 注意: A:goto和const是保留字 B:类似于Notepad++这样的高级记事本,针对关键字都有特殊的颜色标记。 */ class KeyWordDemo { public static void main(String[] args) { System.out.println("HelloWorld"); } }
/* 标识符:就是给类,接口,方法,变量等起名字。 组成规则: A:英文字母大小写 B:数字字符 C:$和_ 注意事项: A:不能以数字开头 B:不能是Java中的关键字 C:Java语言严格区分大小写 常见的命名规则:见名知意 举例:我要定义一个学生类 class Student {} class S{} 包:其实就是文件夹,用于把相同的类名进行区分 全部小写 单级:liuyi 多级:cn.itcast cn itcast 类或者接口: 一个单词:单词的首字母必须大写 举例:Student,Dog 多个单词:每个单词的首字母必须大写 举例:HelloWorld,StudentName 方法或者变量: 一个单词:单词的首字母小写 举例:main,age 多个单词:从第二个单词开始,每个单词的首字母大写 举例:studentAge,showAllNames() 常量: 一个单词:全部大写 举例:PI 多个单词:每个字母都大写,用_隔开 举例:STUDENT_MAX_AGE */ class MakeNameDemo { public static void main(String[] args) { //正确做法 int x = 100; //不能以数字开头 //int 1y = 100; int y1 = 100; //不能是Java中的关键字 //int public = 100; int Public = 100; } }
/* 常量: 在程序执行过程中,其值不发生改变的量。 分类: A:字面值常量 B:自定义常量(后面讲) 字面值常量 A:字符串常量 用双引号括起来的内容。 举例:"hello","world","HelloWorld" B:整数常量 所有的整数 举例:100,200 C:小数常量 所有的小数 举例:10.23,110.11 D:字符常量 用单引号括起来的内容 举例:'a','A','0' 错误的:'ab' E:布尔常量 比较特殊 举例:true,false F:空常量 后面讲 举例:null */ class ConstantDemo { public static void main(String[] args) { //字符串常量的输出 System.out.println("hello"); //整数常量的输出 System.out.println(100); //小数常量的输出 System.out.println(100.10); //字符常量的输出 System.out.println('a'); System.out.println('A'); System.out.println('0'); //这个是有问题的 //System.out.println('ab'); //布尔常量的输出 System.out.println(true); System.out.println(false); } }
/* 数据类型:Java是一种强类型的语言,针对每一种数据都定义了明确的数据类型。 数据类型分类: A:基本数据类型 B:引用数据类型(类,接口,数值) 基本数据类型:4类8种 A:整数 占用字节数 byte 1 short 2 int 4 long 8 B:浮点数 float 4 double 8 C:字符 char 2 D:布尔 boolean 1 注意: 整数默认是int类型 浮点数默认是double类型。 长整型后缀用L或者l标记。建议使用L。 单精度浮点数用F或者f标记。建议使用F。 */ class DataTypeDemo { public static void main(String[] args) { //定义变量的格式: //数据类型 变量名 = 初始化值; //定义一个字节变量 byte b = 10; System.out.println(10); System.out.println(b); //定义一个短整型变量 short s = 100; System.out.println(s); //定义一个整型变量 int i = 1000; System.out.println(i); //超过了int的范围 //int j = 1000000000000; long j = 1000000000000L; //long j = 100L; System.out.println(j); //定义浮点数据变量 float f = 12.345F; System.out.println(f); double d = 12.345; System.out.println(d); //定义字符变量 char ch = 'a'; System.out.println(ch); //定义布尔变量 boolean flag = true; System.out.println(flag); }
1:运算符(掌握)
(1)算术运算符
A:+,-,*,/,%,++,--
B:+的用法
a:加法
b:正号
c:字符串连接符
C:/和%的区别
数据做除法操作的时候,/取得是商,%取得是余数
D:++和--的用法
a:他们的作用是自增或者自减
b:使用
**单独使用
放在操作数据的前面和后面效果一样。
a++或者++a效果一样。
**参与操作使用
放在操作数的前面:先自增或者自减,再参与操作
int a = 10;
int b = ++a;
放在操作数的后面:先参与操作,再自增或者自减
int a = 10;
int b = a++;
(2)赋值运算符
A:=,+=,-=,*=,/=,%=等
B:=叫做赋值运算符,也是最基本的赋值运算符
int x = 10; 把10赋值给int类型的变量x。
C:扩展的赋值运算符的特点
隐含了自动强制转换。
面试题:
short s = 1;
s = s + 1;
short s = 1;
s += 1;
请问上面的代码哪个有问题?
(3)比较运算符
A:==,!=,>,>=,<,<=
B:无论运算符两端简单还是复杂最终结果是boolean类型。
C:千万不要把==写成了=
(4)逻辑运算符
A:&,|,^,!,&&,||
B:逻辑运算符用于连接boolean类型的式子
C:结论
&:有false则false
|:有true则true
^:相同则false,不同则true。
情侣关系。
!:非true则false,非false则true
&&:结果和&是一样的,只不过有短路效果。左边是false,右边不执行。
||:结果和|是一样的,只不过有短路效果。左边是true,右边不执行。
(5)位运算符(了解)
A:^的特殊用法
一个数据针对另一个数据位异或两次,该数不变
B:面试题
a:请实现两个变量的交换
**采用第三方变量
**用位异或运算符
左边a,b,a
右边a^b
b:请用最有效率的方式计算出2乘以8的结果
2<<3
(6)三元运算符
A:格式
比较表达式?表达式1:表达式2;
B:执行流程:
首先计算比较表达式的值,看是true还是false。
如果是true,表达式1就是结果。
如果是false,表达式2就是结果。
C:案例:
a:比较两个数据是否相等
b:获取两个数据中的最大值
c:获取三个数据中的最大值
2:键盘录入(掌握)
(1)实际开发中,数据是变化的,为了提高程序的灵活性,我们加入键盘录入数据。
(2)如何实现呢?目前就记住
A:导包
import java.util.Scanner;
位置:在class的上边
B:创建对象
Scanner sc = new Scanner(System.in);
C:获取数据
int x = sc.nextInt();
(3)把三元运算符的案例加入键盘录入改进。
3:流程控制语句
(1)顺序结构 从上往下,依次执行
(2)选择结构 按照不同的选择,执行不同的代码
(3)循环结构 做一些重复的代码
4:if语句(掌握)
(1)三种格式
A:格式1
if(比较表达式) {
语句体;
}
执行流程:
判断比较表达式的值,看是true还是false
如果是true,就执行语句体
如果是false,就不执行语句体
B:格式2
if(比较表达式) {
语句体1;
}else {
语句体2;
}
执行流程:
判断比较表达式的值,看是true还是false
如果是true,就执行语句体1
如果是false,就执行语句体2
C:格式3
if(比较表达式1) {
语句体1;
}else if(比较表达式2){
语句体2;
}
...
else {
语句体n+1;
}
执行流程:
判断比较表达式1的值,看是true还是false
如果是true,就执行语句体1
如果是false,就继续判断比较表达式2的值,看是true还是false
如果是true,就执行语句体2
如果是false,就继续判断比较表达式3的值,看是true还是false
...
如果都不满足,就执行语句体n+1
(2)注意事项
A:比较表达式无论简单还是复杂,结果是boolean类型
B:if语句控制的语句体如果是一条语句,是可以省略大括号的;如果是多条,不能省略。
建议:永远不要省略。
C:一般来说,有左大括号,就没有分号,有分号,就没有左大括号。
D:else后面如果没有if,是不会出现比较表达式的。
E:三种if语句其实都是一个语句,只要有一个执行,其他的就不再执行。
(3)案例:
A:比较两个数是否相等
B:获取两个数中的最大值
C:获取三个数中的最大值(if语句的嵌套)
D:根据成绩输出对应的等级
E:根据月份,输出对应的季节
F:根据x计算对应y的值并输出
(4)三元运算符和if语句第二种格式的关系
所有的三元运算符能够实现的,if语句的第二种格式都能实现。
反之不成立。
如果if语句第二种格式控制的语句体是输出语句,就不可以。
因为三元运算符是一个运算符,必须要有一个结果返回,不能是一个输出语句。
相关文章推荐
- 【黑马程序员】JAVA基础知识概述
- “黑马程序员“OC学习初体验面向对象小例子
- 常见的面试C#技术题目
- 程序员
- PHP面试题
- php版 - 每个程序员1小时内必须解决的5个编程问题
- 北漂程序员的笑与泪
- 北漂程序员的笑与泪
- 干货来啦---国外程序员整理的java资源大全
- 程序员如何使用和提高搜索资料的技巧
- ssh框架面试总结
- 前端初级工程师面试题
- 为什么屌丝码农身边没有美女朋友
- 黑马程序员——分析匿名内部类使用外部定义的对象
- 10个帮程序员减压放松的网站
- 一个老程序员的Android学习路线指南
- 前端面试题总结
- 优秀程序员不得不知道的20个位运算技巧
- 程序员该有的艺术气质—SOLID原则
- 编程面试的10大算法概念汇总