2019-3-8 java基础篇第二天

2019-03-12  本文已影响0人  相信灬你一直在
今日目标

1.理解基本的数据类型之间的转化
2.了解常用运算符
3.掌握java中的方法概念,以及使用
4.了解基本的流程控制语言。

1. 数据类型

Java程序中要求参与的计算的数据,必须要保证数据类型的一致性,如果数据类型不一致将发生类型的转换


图片.png

1.1自动转换

一个 int 类型变量和一个 byte 类型变量进行加法运算,运算结果,变量的类型将是 int 类型,这就是出现了数据类型的自动类型转换现象。
自动转换:将取值范围小的类型 自动提升为 取值范围大的类型 。
从上图中的位数我们看到,int的位数大于byte,因此最终的结果会转换为int

public static void main(String[] args) {
    int i = 1;
    byte b = 2;// byte x = b + i; // 报错//int类型和byte类型运算,结果是int类型 
    int j = b + i;
    System.out.println(j);
转换原理图如下
byte 类型内存占有1个字节(8位),在和 int 类型运算时会提升为 int 类型 ,自动补充3个字节(3*8位),因此计算后的结果还是 int 类 图片.png

同理 当我们用int和double变量进行运算的时候,最终得到的必然会是double类型

转换规则:

前面提过其规则是范围小的类型向范围大的类型提升, byte、short、char 运算时直接提升为 int。8大基本类型的总体规则如下

byte、short、char‐‐>int‐‐>long‐‐>float‐‐>doub

在学习这里的时候不要死记,记住他们的大小关系既可。

1.2 强制转换

现在知道了小类型可以自动的转化为大的类型,那么反过来呢。将一个小数赋值给int,我们将会看到编译失败。
其主要原因就是double 类型内存8个字节, int 类型内存4个字节。 1.5 是 double 类型,取值范围大于 int 。可以理解为 double 是8升的水壶, int 是4升的水壶,不能把大水壶中的水直接放进小水壶。此时我们就要用到强制转化类型
转换格式:

数据类型 变量名 = (数据类型)被转数据值;
将 1.5 赋值到 int 类型,
代码修改为:

// double类型数据强制转成int类型,直接去掉小数点。
int i = (int)1.

同理,当一个 short 类型与 1 相加,我们知道会类型提升,但是还想给结果赋值给short类型变量,就需要强制转换。

public static void main(String[] args) {
//short类型变量,内存中2个字节
short s = 1;
/*出现编译失败s和1做运算的时候,1是int类型,s会被提升为int类型s+1后的结果是int类型,将结果在赋值会short类型时发生错误short内存2个字节,int类型4个字节必须将int强制转成short才能完成赋
*/
    s = s + 1;//编译失败
    s = (short)(s+1);//编译成功

转换原理图


图片.png

需要注意的是:

1.3AscII编码

在计算机的内部都是二进制的0、1数据,如何让计算机可以直接识别人类文字的问题呢?就产生出了编码表的概念。
编码表 :就是将人类的文字和一个十进制数进行对应起来组成一张表.


图片.png

2 运算符

2.1算数运算符

图片.png
前面的加减乘除都比较简单,我们来看最后的自增和自减
++ 运算,变量自己增长1。反之, -- 运算,变量自己减少1,用法与 ++ 一致。
独立运算:变量在独立运算时, 前++ 和 后++ 没有区别 。变量 前++ :例如 ++i 。变量 后++ :例如 i++
混合运算:和其他变量放在一起, 前++ 和 后++ 就产生了不同。
变量 前++ :变量a自己加1,将加1后的结果赋值给b,也就是说a先计算。a和b的结果都是2
b=++a;

变量 后++ :变量a先把自己的值1,赋值给变量b,此时变量b的值就是1,变量a自己再加1。a的结果是2,b的结果是1

b=a++;

2.2 赋值运算符

图片.png

因为这些比较简单就不做过多解释

2.3 比较运算符

图片.png

两个数据之间做比较,返回值为booblean值

2.4 逻辑运算符

图片.png

2.5 三元运算符

三元运算符格式:
数据类型 变量名 = 布尔类型表达式?结果1:结果2
三元运算符计算方式:
布尔类型表达式结果是true,三元运算符整体结果为结果1,赋值给变量。
布尔类型表达式结果是false,三元运算符整体结果为结果2,赋值给变结果2

3.方法

3.1方法的调用

如果在main方法中调用,可以直接写方法名字。

public static void main(String[] args) {
    //调用定义的方法
   method();
}
//定义方法,被main方法调用
public static void method() {
    System.out.println("自己定义的方法,需要被main调用运行")
}
注意事项:

4.流程控制

一个代码的执行时按照相应的顺序,我们在编写代码的时候必然需要控制相关代码的顺序来完成我们的逻辑。

4.1顺序执行。

所谓顺序执行就是根据代码所写一行一行从上到下执行,不会有翻转到前面执行的情况。

public static void main(String[] args){
//顺序执行,根据编写的顺序,从上到下运行
    System.out.println(1);
    System.out.println(2);
    System.out.println(3);
}

4.2判断语句

  第一种格式: 
    if(关系表达式){
        语句体
    }
执行流程:
public static void main(String[] args){
    System.out.println("开始");
    // 定义两个变量
    int a = 10;
    int b = 20;//变量使用if判断
    if (a == b){
    System.out.println("a等于b");
    }
    int c = 10;
    if(a == c){
    System.out.println("a等于c");
    }
    System.out.println("结束")
    if(关系表达式) {
      语句体1;
      }else {
      语句体2
    }
执行流程:
if (判断条件1) {
执行语句1;
} else if (判断条件2) {
执行语句2;
}
...
}else if (判断条件n) {
执行语句n;
} else {
执行语句n+1;
}
执行流程:

4.3 选择语句switch

格式:

switch(表达式) {
case 常量值1:语句体1;break;
case 常量值2:语句体2;break;
                ...
default:语句体n+1;break
执行流程:
注意:一定要有break语句,要不然会进入后不出来的,程序只会遇到break才会停止case。在switch语句中,如果case的后面不写break,将出现穿透现象,也就是不会在判断下一个case的值,直接向后运行,直到遇到break,或者运行完整体switch结束。
图片.png
switch语句中,表达式的数据类型,可以是byte,short,int,char,enum(枚举),JDK7后可以接收字符

4.4循环语句for,while,do---while

for(初始化表达式①; 布尔表达式②; 步进表达式④){
              循环体
}
执行流程:
初始化表达式①
while(布尔表达式②){
循环体③
步进表达式
}
执行流程
初始化表达式①
do{
循环体③
步进表达式④
}while(布尔表达式②)

#######执行流程

注意:一定要在循环的时候设置出口,否则会死循环,例如你在while(true)这样永远无法跳出while循环

4.5嵌套调用

简单总结就是for循环里面还有一个for循环。

for(初始化表达式①; 循环条件②; 步进表达式⑦) {
      for(初始化表达式③; 循环条件④; 步进表达式⑥) {
            执行语句⑤;
      }
}

打印5*8的矩形

public static void main(String[] args) {
//5*8的矩形,打印5行*号,每行8个//外循环5次,内循环8次
for(int i = 0; i < 5; i++){
    for(int j = 0; j < 8; j++){
      //不换行打印星号
      System.out.print("*");
    }
//内循环打印8个星号后,需要一次换行
    System.out.println();
  }  
}
上一篇 下一篇

猜你喜欢

热点阅读