黑马程序员之 ---- 基础语法上(关键字、标识符、进制、变量、数据类型、运算符、语句)

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

标识符

组成规则:

大小写字母

数字

与 $

使用规则:

不能以数字开头

不能是java的关键字

区分大小写

命名规则:

包:理解为就是一个文件夹   例如:域名:www.baidu.com 域名反写:com.baidu.xx

单层文件夹:所有字母小写    例如:  cn

多层文件夹:所有字母小写,每层之间用.分割    例如:cn.itcast.view com.baidu.util

类与接口:

一个单词:

首字母大写,其他字母小写    例如:Student   Person  Car 

多个单词:

 每个单词首字母大写,其他字母小写   例如: StduentDemo 

方法: 

一个单词:

 所有字母小写

多个单词:

 第一个单词小写,第二个单词起,首字母大写,其他字母小写  例如:studentAge()   getMax()

变量:

一个单词:

 所有字母小写  例如: name   age 

多个单词:

 第一个单词首字母小写,第二个单词起,首字母大写,其他字母小写   例如:studentAge 

常量:

一个单词:

 所有字母大写  例如:PI  AGE

多个单词:

 所有字母大写,每个单词之间用 连接   例如: STUDENT_MAX_AGE

注释

注释: 解析说明程序的作用

注释的分类:

单行注释: //需要注释的内容

多行注释: /* 需要注释的内容 */

文档注释/**需要注释的内容*/

注释的作用:

1: 解析说明程序

2: 调试程序的错误

 

关键字概述

Java语言赋予特定含义的单词

关键字特点

组成关键字的字母全部小写

关键字注意事项

gotoconst作为保留字存在,目前并不使用

关键字分类

用于定义数据类型的关键字

Class  interface  byte short int   long  float   double   char   boolean  void

用于定义数据类型值的关键字

true false null

用于定义流程控制的关键字

if else switch case default  while  do for break continue  return

用于定义访问权限修饰符的关键字

private protected   public

用于定义类,函数,变量修饰符的关键字

abstract final static synchronized

用于定义类与类之间关系的关键字

extends implements

用于定义建立实例及引用实例,判断实例的关键字

new this super instanceof

用于异常处理的关键字

try catch finally throw throws

用于包的关键字

package import

其他修饰符关键字

native strictfp transient volatile assert

常量:

常量概述

在程序执行的过程中其值不可以发生改变

常量的分类:

字面值常量

字符串常量  用双引号括起来的内容  例如:"hello"  "你好"

整数常量 所有整数   例如:111 123 -128

小数常量 所有小数   例如:3.5 -2.2

字符常量 用单引号括起来的内容   例如:'a' 'b' 'A' '0'

布尔常量   例如:true() false()

空常量 null

进制就是进位制,是人们规定的一种进位方法

其他进制转换到十进制:

规则: 系数 基数^权次幂

系数:就是每一位上的数据

基数:X进制,基数就是X

权:在右边,从0开始编号,对应位上的编号即为该位的权

结果:把系数*基数的权次幂相加即可

十进制转换到其他进制:

规则: 除基取余,除到商为0结束,然后余数倒过来取

快速的进制转换法(8421):

1 1  1 1 1 1 1 1

2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0

128 64 32 16 8 4 2 1

原码反码补码:

   把一个二进制数,分成分成符号位,和数值位    

原码:

正数: 符号位0, 其他为数值位

负数: 符号位1, 其他为数值位 

反码:

正数: 和原码一样

负数: 符号位1, 数值位按位取反

补码:

正数: 和原码一样

负数: 反码+1

变量:

变量概述:在程序执行的过程中,在某个范围内其值可以发生改变的量

作用:用来不断的存放同一类型的常量,并可以重复使用

定义变量的格式:

方式1: 数据类型 变量名 初始化值;   int a = 100;

方式2: 数据类型 变量名;   int  a  ;

变量名 初始化值;   a= 100;

数据类型:

基本数据类型    整数类型              浮点类型    字符类型    布尔类型

byte  short int  Long   float   double    char           boolean 

占用存储空间 1     2     4    8  4      8        2              1

引用数据类型:

类 class

接口 interface

数组 [] 

使用变量的注意事项

1: 作用域

变量定义在哪一级大括号中,哪个大括号的范围就是这个变量的作用域

相同的作用域中不能定义两个同名变量

2: 初始化值

没有初始化值不能直接使用

3: 在一行上建议只定义一个变量

int a,b,c,d,e; 不建议

int a;//建议

int b;//建议

 

数据类型举例:

//整数byte类型  -128 -- 127

System.out.println(100);

//short类型

System.out.println(1000);

//int类型

System.out.println(10000);

//long类型需要在数据的后面加上l或者L

System.out.println(100000000000000L);

 

//浮点数

//float类型, 需要再数据的后面加上或者

System.out.println(3.14F);

//double类型

System.out.println(3.199999999);

 

//字符类型

// char 类型  占用2个字节

System.out.println('a');

System.out.println('A');

//错误的

//System.out.println('Aasd');

 

//boolean 类型

System.out.println(true);

 

//-----------------------------------

//定义变量的格式:

// 数据类型 变量名 初始化值;

//整数 int

int x = 5;

x = 100;

System.out.println(x);

注意:

整数默认使用int类型

小数默认使用的 double 类型

数据类型转换

 

隐式转换小的数据类型 向 大的数据类型转换

这个转换的操作会默认自己完成,不需要我们处理

byte,short,charintlongfloatdouble

byte,short,char相互之间不转换,他们参与运算首先转换为int类型

例如:

     //错误

byte bb = b + i;

System.out.println(bb);

 

//正确

int j = b + i;

System.out.println(j);

强制转换:大的数据类型 向 小的数据类型转换

手动完成

格式:目标类型 变量名=(目标类型)(被转换的数据);

例如: byte b = 3;

   b = (byte)(b + 3);

 

(面试题) Java语言中的字符char可以存储一个中文汉字吗?为什么呢?

可以。因为Java语言采用的是Unicode编码。

Unicode编码中的每个字符占用两个字节。所以,Java中的字符可以存储一个中文汉字

 

字符和字符串参与运算:

字符串和其他类型的数据 使用 号运算的时候,

会把字符串与其他类型的数据相连接,返回连接后的新字符串

 

算术运算符:

和 的区别?

除法操作, 得到的结果是商

取余数操作,得到的结果是余数

++--运算符:

++--运算符在操作数的前面先操作数自增1或者自减1, 然后再参与赋值运算

++,--运算符在操作数的后面, 先参与赋值运算,然后操作数自增1或者自减1

例如:

int a = 10;

int b = 10;

int c = 10;

a = b++;//10,11,10

c = --a;//9 ,11,9 

b = ++a;//10,10,9

a = c--;//9 ,10,8 

System.out.println(a);//9

System.out.println(b);//10

System.out.println(c);//8

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

int d = 4;//5,6

int e = (d++)+(++d)+(d*10);

         //4 + 6 + 60 

System.out.println(c);//6

System.out.println(d);//70

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

int i = 0;

//i = ++i;

i = i++;// i的值存储到一个临时空间(值为0)

//按照优先级,先执行++操作后,i中的值成为了1, 

//按照优先级,再来执行赋值的=操作, 临时空间(值为0) 赋值为 i

System.out.println(i);//0

赋值运算符:

1: +=,-=等这样的操作符自带一个强制转换功能

2: 赋值运算符的左边必须是一个变量

例如:short s = 1;

s+=1等价于

s=(s的数据类型)(s+1);

比较运算符

1: = 与 == 的区别

: 赋值运算符, 把右边的结果 赋值给左边变量

==:  比较运算符, 判断左右两边的数据是否相等,返回的结果是boolean 类型(true\false)

逻辑运算符:

逻辑与运算符 : 有false则假

逻辑或运算符 :  true则真

逻辑异或运算符:相同则false,不同则true

逻辑非运算符:  true变假, false变真

&& 和 || 的使用:

他们的使用的结果与 (& | )的结果相同

它们具备短路功能(如果左边条件能确定结果,不执行右边的判断)

位运算符:

位与运算符: 有00

位或运算符:11

位异或运算符:相同则0,不同则1

位反码运算符:按位取反(包含符号位)

<< 左移运算符: 空位补0,被移除的高位丢弃

>> 右移运算符: 被移位的二进制最高位是0,右移后,空缺位补0

最高位是1,最高位都补1

>>> 无符号右移运算符:被移位二进制最高位无论是0或者是1,空缺位都用0补。

(面试题)

1、请用最有效率的方式写出计算2乘以8的结果

2<<3

2、想实现两个变量中的值互换

int c = 10;

int d = 20;

c = c ^ d;

d = c ^ d;// c ^ d ^ d = c

c = c ^ d;// c ^ d ^ c = d

三元运算符[三目运算符]

格式:

(条件表达式)?表达式1:表达式2

执行流程:

如果条件为true,运算后的结果是表达式1

如果条件为false,运算后的结果是表达式2

注意: 条件表达式最终的运算结果是 boolean 类型 (truefalse

键盘录入概述

我们目前在写程序的时候,数据值都是固定的,但是实际开发中,数据值肯定是变化的,所以,我准备把数据改进为键盘录入,提高程序的灵活性。

使用方法:导包(位置放到class定义的上面)

import java.util.Scanner;

创建对象(写在main方法的里面)

Scanner sc = new Scanner(System.in);

接收数据

int x = sc.nextInt();

例如:

import java.util.Scanner;

class ScannerDemo2 

{

public static void main(String[] args) 

{

//创建对象

Scanner sc = new Scanner(System.in);

//获取键盘录入的数字

System.out.println("请输入第一个数字:");

int num1 = sc.nextInt();

System.out.println("请输入第二个数字:");

int num2 = sc.nextInt();

//求和

int sum = num1 + num2;

//System.out.println(num1);

//System.out.println(num2);

System.out.println("sum="+sum);

}

}

流程控制语句指定程序的执行方式

流程控制语句分类

顺序结构:是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。

总的来说:写在前面的先执行,写在后面的后执行

例如:  如下代码由上往下依次执行 

class OrderDemo {

public static void main(String[] args) {

System.out.println("我们早上9点上课");

System.out.println("我们12点下课");

System.out.println("我们下午5:30点下课吃饭");

System.out.println("over");

}

}

选择结构

if(重点)

switch(理解)

选择结构if语句:

if语句第一种格式:

if(条件表达式) {

语句体

}

执行流程

首先判断关系表达式看其结果是true还是false

如果是true就执行语句体

如果是false就不执行语句体

例如:

class IfDemo {

public static void main(String[] args) {

int a = 5;

if (a == 5) {

System.out.println("a等于5");

}

}

}

if语句第二种格式:

if(条件表达式) {

 语句体1;

}else {

 语句体2;

}

执行流程

首先判断关系表达式看其结果是true还是false

如果是true就执行语句体1

如果是false就执行语句体2

例如:  获取两个数中的最大值?

import java.util.Scanner;

class IfDemo3 {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

//1:键盘录入两个数

System.out.println("请输入第一个数字");

int a = sc.nextInt();

System.out.println("请输入第二个数字");

int b = sc.nextInt();

//2:比较大小,获取到最大的数 

int max;

if (a > b){

max = a;

} else {

max = b;

}

System.out.println("max="+max);

}

}

if语句第三种格式:

if(关系表达式1) {

 语句体1;

}else  if (关系表达式2) {

 语句体2;

}

else {

 语句体n+1;

}

执行流程:

哪一个关系表达式成立,执行对应的语句体,然后结束if选择结构

要是所有的关系表达式都不成立,执行最后的else中的语句体

注意事项:

关系表达式无论简单还是复杂,结果必须是boolean类型

if语句控制的语句体如果是一条语句,大括号可以省略;如果是多条语句就不能省略。建议永远不要省略。

一般来说:有左大括号就没有分号,有分号就没有左大括号

例如:

import java.util.Scanner;

class IfDemo5 {

public static void main(String[] args) {

//创建对象

Scanner sc = new Scanner(System.in);

System.out.println("请输入学生成绩【1--100");

int score = sc.nextInt();

if (score<0 || score > 100) {

System.out.println("成绩输入有误");

} else if (score>=80 && score<90) {

System.out.println("");

} else if (score>=90 && score<=100){

System.out.println("优秀");

} else if (score>=70 && score<80){

System.out.println("");

} else if (score>=60 && score<70){

System.out.println("及格");

} else {

System.out.println("不及格");

}

}

}

If语句的嵌套

例题:获取三个数据中的最大值

class IfDemo7 {

public static void main(String[] args) {

int a = 5;

int b = 10;

int c = 8;

int max;

if (a > b){

//a

//如果第一个数大, 用第一个数 与 第三个比较

if (a > c){

max = a;

} else {

max = c;

}

} else {

//b

// 如果第二个数大, 用第二个数 与 第三个比较

if (b>c){

max = b;

} else {

max = c;

}

}

System.out.println("max="+max);//10

}

}

 

if语句结构与三目运算符的区别?

if(3>4){

SOP(3);

} else {

SOP(4);

}

向上面这种输出语句的时候,不能用三目运算符改写

下面的方式可以使用三目运算符改写

int max;

if(3<4) {

max = 4;

} else {

    max = 3;

}

注意, 在三目运算符中的表述式1和表达式2,要求必须是一个值,而不能是输出语句

选择结构switch语句

switch语句格式:

switch(表达式) {

case 1

语句体1;

break;

    case 2

语句体2;

break;

    …

    default

语句体n+1;

break;

}

格式解释

switch表示这是switch语句

表达式的取值:byte,short,int,char

JDK5以后可以是枚举

JDK7以后可以是String

case后面跟的是要和表达式进行比较的值

语句体部分可以是一条或多条语句

break表示中断,结束的意思,可以结束switch语句

default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。

执行流程

首先计算出表达式的值

其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。

最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。

注意事项

case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的

default可以省略吗?

可以省略。一般不建议。除非判断的值是固定的。(单选题)

break可以省略吗?

可以省略,一般不建议。否则结果可能不是你想要的

default的位置一定要在最后吗?

可以出现在switch语句任意位置。

switch语句的结束条件

遇到break

执行到程序的末尾

if语句使用场景:

针对结果是boolean类型的判断

针对一个范围的判断

针对几个常量值的判断

switch语句使用场景:

针对几个常量值的判断        

循环结构的:

(重点)for循环

(理解)while循环

(了解)do..while循环

  for循环:

for循环语句格式:

for(初始化语句;判断条件语句;控制条件语句) {

         循环体语句;

    }

 

执行流程

A:执行初始化语句

B:执行判断条件语句,看其结果是true还是false

如果是false,循环结束。

如果是true,继续执行。

C:执行循环体语句

D:执行控制条件语句

E:回到B继续

例如:求出1-100之间偶数和

class ForDemo4 {

public static void main(String[] args) {

//1 定义一个累加和变量

int evenSum = 0;

//方式1

/*

for (int n=0; n<=100; n++) {

//判断n是否为偶数

if (n%2==0) {

//说明是偶数,进行累加

evenSum += n;

}

}

*/

 

//方式2

for (int n=0; n<=100; n+=2) {

//判断n是否为偶数

if (n%2==0) {

evenSum += n;

}

}

 

System.out.println("偶数和: " + evenSum);

}

}

  while循环

while循环语句格式:

基本格式

while(判断条件语句) {

 循环体语句;

}

扩展格式

初始化语句;

while(判断条件语句) {

 循环体语句;

 控制条件语句;

}

执行流程

A:执行初始化语句

B:执行判断条件语句,看其结果是true还是false

如果是false,循环结束。

如果是true,继续执行。

C:执行循环体语句

D:执行控制条件语句

E:回到B继续

  do..while循环

dowhile循环语句格式:

基本格式

   do {

 循环体语句;

   }while((判断条件语句);

扩展格式

   初始化语句;

   do {

 循环体语句;

 控制条件语句;

} while((判断条件语句);

三种循环的区别:

区别:

dowhile循环至少会执行一次循环体

for循环和while循环只有在条件成立的时候才会去执行循环体

注意事项:

如果循环结束后,要需要使用初始化变量,请使用whlie,否则使用for

推荐使用for循环,因为for循环执行完后后,初始化变量就会在内存中消失了。提高内存效率

循环嵌套:

循环中包含另一个循环

for(){

for(){

}

}

例题:打印九九乘法表

class ForForDemo3 {

public static void main(String[] args) {

for (int i=1; i<=9; i++) {// 控制行数

//i=1

//i=2

//i=3

for (int j=1; j<=i; j++) {//控制列数

//j=1

//j=1,2

//j=1,2,3

 

//System.out.print("*");

System.out.print(i+"*"+j+"="+ i*j+"\t");

}

System.out.println();//换行

}

}

}

 

控制跳转语句:

break: 结束当前循环,程序执行循环后面的代码,在循环语句中离开使用场景的存在是没有意义的

continue:结束本次循环,继续下一次循环,在循环语句中离开使用场景的存在是没有意义的

return: 结束当前方法,return后面的语句不执行

class Demo {

public static void main(String[] args) {

//break;switch语句或 循环结果外使用就报错

//continue;不能在循环语句的外面使用

 

for (int i=0; i<5; i++) {

if (i==2) {

break;//

//continue;

}

System.out.println(i);//0  1

}

 

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

 

for (int i=0; i<5; i++) {

if (i==2) {

//break;

continue;

}

System.out.println(i);//0  1  2  3  4 

}

}

}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值