您的位置:首页 > 职场人生

【黑马程序员】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语句第二种格式控制的语句体是输出语句,就不可以。

  因为三元运算符是一个运算符,必须要有一个结果返回,不能是一个输出语句。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: