java之旅 第三天 详细笔记与拓展

变量:

格式一:数据类型 变量名;

变量名 = 初始化值;(实例化)

格式二:数据类型 变量名 = 初始化值;

格式三:数据类型 变量名,变量名2 = 初始值,变量名3;

注:初始化时 不可以 int a=b=c=12

          赋值时   才可以 int a,b,c;   a=b=c=120;

JAVA有4类8种:

整数、浮点数、字符、布尔

变量的选用原则:在能够满足条件的情况下,尽量选择与其数据大小相符的数据类型(节省空间),一般常用是int和double比较多

整数,浮点数

变量:

在C语言中,会自动转化类型,(short a=1;short b=2;short c=a+b;  是不会报错的)

在Java中,不会自动转化类型,全部默认为int类型(double类型),大的容器不能赋值给小的容器,需手动转化类型,(short a=1;short b=2;short c=a+b;  会报错的)

常量:(默认为int类型,double类型)

在C语言中,超出容器范围,会自动转化为int类型(因为最后按int了类型输出)

举例:

short a=100000000;

输出 -7936

在java中,不超出范围,可以直接赋值,超出容器范围,不会自动计算补码,需手动转化类型(会报错)

举例:

byte a=300(报错)

byte a=(byte)300;

输出 44

char类型

在C语言中:

默认为int类型,可以参与运算不报错(最后由格式控制符控制输出,可以输出int类型,也可以输出char类型)

在java中,参加运算时会自动转化为int类型,因此需要强制转化才能赋值给char类型

举例:

char a='a';

a=a+1;(报错)  a+1直接输出int类型

a=(char)(a+1);

数据类型转换:

隐式类型转换:数据类型从小到大自动转换(变量,整数时都有)

显示类型转换:从大到小需要手动进行转换

格式:

目标数据类型 变量名 = (目标数据类型)需要被转换的数据;

类型转换需要注意的细节:

1.byte、short、char数据类型在进行运算的时候会提升为int类型。、

2.两个不同的数据类型在运算的时候,最后结果类型的呈现是取决于较大的数据类型

注:

System.out.print("字符串后面"+‘’=1);后面加常量直接当字符串输出

System.out.print("字符串后面"+c);后面加变量,先把变量的内容表达出来,再直接当字符串输出

运算符: 

就是对常量和变量进行相关操作的一种符号

分类:

算数运算符、赋值运算符、比较运算符、逻辑运算符、三目运算符

算数运算符:

+ - * / % ++ --

++、--的运用:

单独使用:

你放在操作数的前面和后面效果都是一样,都是进行自身+1或者-1

参与运算的使用:

放在操作的前面,先+1或者-1,然后再去参与运算

注:参与运算的意思是只要有别的运算符在,(=,?:等)都是严格要求区分++在前或在后

举例:

int x=9;

int y=10;

int c=y++;  //c=10;

int c=++y;  //c=11;

x>y?x++:++x //10

x<y?x++:++x //9   x=10;

int x = 4;

int y = (x++)+(++x)*10  //x在自增前已经执行了加号运算  因此 y=64

例外:在显示时,++,--也遵守在前在后规则!!!

赋值运算符:

基本赋值运算符:=

把右边的数据赋值给左边的接收

扩展赋值运算符:+=、-+、*-、/=、%=

+=把左边的数据和右边的数据进行加法操作,然后赋值给左边

注: 面试题:

short s = 1;s = s+1;

short s = 1;s += 1;

上面的代码有没有问题,如果有 是哪一个出问题,为啥?

为什么第二个没有问题?

扩展运算符其实本身就隐含了一个强制类型转换

s+=1;

如果类型匹配:s = s + 1;(一开始就是int 或者 double)

如果类型不匹配:s =(s的数据类型)(s + 1);  注意精度的缺失

比较运算符:

==,!=,>,<,>=,<=

特点:

无论你的操作是简单还是多复杂,他返回的结果永远都只能是boolean类型

注:<= >= 表示 小于或等于,大于或等于(表两种情况)

举例:

int x = 3;

int y = 4;

int z = 3;

System.out.println(x == y);//false

System.out.println(x == z);//true

System.out.println((x+y) == (x+z));//false

逻辑运算符:

&,|,^,!

&&,||

特点:

逻辑运算符只能用于连接布尔类型的表达式或者值

表达式:就是利用Java运算符连接起来的一个式子

a + b

a == b

注:= 链接的为一个语句,赋值语句
 

结论:

& 逻辑与:结果值有false,那么结果就是false

| 逻辑或:结果值有true,那么结果就是true

^逻辑异或:相同的则为false,不同的则为true

举例:情侣关系 男男(no) 女女(no) 男女(yes) 女男(yes)

!逻辑非:取反 是true则为false,是false则为true

&&和&,以及|和||的区别?

a.他们最终的结果都是一致

b.&&具备短路的效果,如果你的左边是false那么右边的不再执行(因为已经肯定了结果),如果是&,不论两边多复杂,都会全部运行

c.||也是同理

因此,通常用 && ||

三目运算符:(简化版的if,不能执行语句,必须返回一个特定的值)

三目运算符格式:

主表达式 ? 表达式1(数据值) : 表达式2(数据值);

执行流程:

1.根据主表达式的值,看其是true还是false

2.如果是true就执行(返回)表达式1

3.如果是false就执行(返回)表达式2

注意事项:

1.使用三目运算符,里面的表达式不管过程是简单还是复杂,都必须要有一个明确的数值(四种基本类型)

2.两个表达式的值,必须是存在兼容的,相兼容的数据类型即使不一致也可以在合规的情况下进行强制类型转换(必须有一个变量来接收运算符返回的值)

举例:

//3.自定义乌龟和鲤鱼的重量,需要输出如下文字(乌龟比鲤鱼重xxx斤)

int wg = 150;

int ly = 29000;

String str = (wg > ly)? "乌龟比鲤鱼重"+(wg-ly)+"斤" : "鲤鱼比乌龟重"+(ly-wg)+"斤" ;

System.out.println(str);

从键盘录入: 

程序需要从外界获得数据,因此必须通过键盘获取数据

实现录入

A.导包(包的名字为全小写)

格式:

import java.util.Scanner;(分号不能省)

位置:

一定是在class上面

B.创建键盘录入对象

格式:

Scanner sc = new Scanner(System.in);(Scanner System 为类,因此首字母大写)

注:.java文件的名字必须跟类的名字相同(驼峰命名法)

位置:

原则上在你需要使用之前就可以了。

C.通过对象来获取具体的键盘的输入值

int x = sc.nextInt();

注:除了char类型,其他类型都有nextDouble()等方法(类型首字母大写)

    字符串类型输入有两种:

    next()一个个字符输入,遇空格与换行结束,   

    netLine()录入一行,以换行结束  (不推荐使用,进入缓存,不定情况多)

   使用一个 Scanner 就可以无限使用,不用另外定义一个Scanner类

选择结构:

if / switch

注:

C语言中,除了0,其他非0的数都为真,如 if(1) 可以通过编译

java不行,任何判断的语句返回值必须为boolean值才能通过编译,如 if(1==1)

if语句的第一种格式

if(最终值为布尔类型的东西【表达式】){

语句体;

}

执行流程:

先计算你的表达式的值,看其是false还是true

如果是true,就执行语句体

如果是false就不执行语句体

if注意事项:

1.你的if里面的表达式,不管是简单还是复杂,里面的最终结果必须是boolean类型

2.如果你的if里面只有一条语句,原则上是可以省略大括号,但是不建议这样去做

if语句格式2

if(表达式){

语句体1;

}else{

语句体2;

}

执行流程:

1.首先计算表达式的值 看其返回的是false还是true

2.如果是true执行语句体1

3.如果是false执行语句体2

*需求:卖猪

  400-500的猪,小猪佩奇

  300-400的猪,极品小猪

  200-300的猪,精品猪

  100-200的猪,普通猪

  50-100的猪,需要被拯救的猪

  50以下的猪,废猪

if语句的格式3

if(表达式1){

语句体1;

}else if(表达式2){

语句体2;

}else if(表达式3){

语句体3;

}else if(表达式4){

语句体4;

}else{

语句体n+1;

}

注:else不能添加条件,如果要添加条件必须为else if

if与三元运算符区别

三元运算符能够实现的,if语句都能实现

反之,if能够实现的,三目并不一定能够实现

比如?

三目运算符必须返回一个明确具体数据值。

三目运算符里面,原则不能写任何的语句,包括变量、常量、循环等等等,而if则可以几乎写java出了类和方法的所有语句

举例:

int a=9,b=10;

if(a<b)

b=a;

a<b?b=a;a=b(错误)  因为赋值是一种语句

补充,关于同名变量:(java不允许同名变量)

举例:

java中:

int x = 4;

if(1==1)

{

int x=9;

}

编译不通过


 

C语言中:

int a=9;

if(a)

{

int a=8;

}

编译通过

猜你喜欢

转载自blog.csdn.net/QOQpop/article/details/81107756