Java语言基础

关于Java语言基础知识同学们需要学会什么?

一.类型转换

1.自动类型转换

什么是自动类型转换,为什么要学习自动类型转换?

        类型范围小的变量,可以直接赋值类型范围大的变量。

package com.wjh.hello;

public class Hello {
    public static void main(String[] args) {
        byte a = 55;
        int b=a;     //发生了自动类型转换
        System.out.println(a);        //55
        System.out.println(b);        //55
        
    }
}

 

package com.wjh.hello;

public class Hello {
    public static void main(String[] args) {
        byte a = 55;
        int b=a;     //发生了自动类型转换
        System.out.println(a);  //55
        System.out.println(b);  //55

        int age=23;
        double age2=age;    //发生了自动类型转换
        System.out.println(age);    //23
        System.out.println(age2);   //23.0

        char c='a';     //00000000 01100001
        int c2=c;       //00000000 00000000 00000000 01100001
        System.out.println(c);      //a
        System.out.println(c2);     //97
    }
}

2.表达式的自动类型转换

表达式的自动类型转换
        在表达式中,小范围类型的变量会自动转换成当前较大范围的类型再运算。



注意事项:

        表达式的最终结果类型由表达式中的最高类型决定

        在表达式中,byte、short、char直接转换成int类型参与运算的。

package com.wjh.hello;

public class Hello {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        double c = 1.0;

        double d = a + b + c;     //发生了表达式类型转换
        //int d2=a+b+c;     //报错;原因:上面有double,大的范围的类型不能转换小的范围

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

        double e = a + b - 2.3;

        System.out.println(e);      //27.7

        //面试题
        byte i = 10;
        byte j = 20;
        //byte k = i+j;   //报错,原因:byte是以int类型存储的,后面用byte是小的,应该用int及以上的
        int k = i + j;
        long kl=i+j;
        double k2 = i + j;

        System.out.println(k);      //30
        System.out.println(kl);      //30
        System.out.println(k2);     //30.0
    }
}

3.强制类型转换

场景

int a = 功能1();
功能2(byte b);
int a = 20;
byte b = a;//报错

问题
        类型范围大的数据或者变量,不能直接赋值类型范围小的变量,会报错。

数据类型变量2=(数据类型)变量1、数据
package com.wjh.hello;

public class Hello {
    public static void main(String[] args) {
        int a=20;
        byte b=(byte)a;

        int i=200;
        byte j=(byte)i;

        System.out.println(a);      //20
        System.out.println(b);      //20

        System.out.println(i);      //200
        System.out.println(j);      //-56     //原因见下图
    }
}

 

 110011100        开头位为1,所以是负数(0正 1负)

注意事项

        强制类型转换可能造成数据(丢失)溢出;

        浮点型强转成整型,直接丢掉小数部分,保留整数部分返回

package com.wjh.hello;

public class Hello {
    public static void main(String[] args) {
        double a=99.5;
        int b=(int)a;

        System.out.println(a);      //99.5
        System.out.println(b);      //99        //强制类型转换,丢掉了小数部分

    }
}

二.运算符

1.基本算数运算符

运算符
        运算符:对字面量或者变量进行操作的符号

package com.wjh.hello;

public class Hello {
    public static void main(String[] args) {
        int a=10;
        int b=3;
        System.out.println(a+b);    //加
        System.out.println(a-b);    //减
        System.out.println(a*b);    //乘
        System.out.println(a/b);    //除
        System.out.println(a%b);    //取余
        
        System.out.println(3/2);    //1
        System.out.println(3*1.0/2);    //1.5

    }
}

2.+符号做连接符

编程案例:三位数分别打印个位,十位,百位
package com.wjh.hello;

public class Hello {
    public static void main(String[] args) {
        //三位数分别打印个位,十位,百位
        int a=123;
        int g=a%10;
        int s=a/10%10;
        int b=a/100;

        System.out.println(+a);    //123
        System.out.println("个位:"+g);    //3
        System.out.println("十位:"+s);    //2
        System.out.println("百位:"+b);    //1
    }
}

"+”做连接符
+”符号与字符串运算的时候是用作连接符的,其结果依然是一个字符串
 

3.自增自减运算符

 注意:
        ++和--既可以放在变量的后边,也可以放在变量的前边。

        ++、--只能操作变量,不能操作字面量的。

package com.wjh.hello;

public class Hello {
    public static void main(String[] args) {
        int a=10;
        a=a+1;
        System.out.println(a);
        a++;
        System.out.println(a+"\n");

        int b=5;
        b=b-1;
        System.out.println(b);
        b--;
        System.out.println(b);
    }
}

自增自减的使用注意事项
        ++、--如果不是单独使用(如在表达式中、有问的月共白床1F) ,n人n一">放在变量的前面,先对变量进行+1、-1,再拿变量的值进行运算。

int a = 10;
int rs = ++a;


        放在变量的后面,先拿变量的值进行运算,再对变量的值进行+1、-1
 

int b = 10;
int rs = b++j
package com.wjh.hello;

public class Hello {
    public static void main(String[] args) {
        //++ --在变量的后面 先+1 -1再使用
        int i=10;
        int j=++i;
        System.out.println(i);  //11
        System.out.println(j);  //11

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

        //++ --在变量的后面 先使用再+1 -1
        int a=10;
        int b=a++;
        System.out.println(a);  //11
        System.out.println(b);  //10
    }
}

package com.wjh.hello;

public class Hello {
    public static void main(String[] args) {
        //拓展案例
        int k=3;
        int p=5;
        //k 3
        //p 5
        //s
        int s=k++ + ++k - --p - p-- - k-- + ++p + 2;
        System.out.println(k);      //3 4 5 4       //4
        System.out.println(p);      //5 4 3 4       //4
        System.out.println(s);      //3+5-4-4-5+4+2     //1
    }
}

4.赋值运算符

基本赋值运算符
        就是“=”

int a=10;    //先看“=”右边,把数据10赋值给左边变量a存储

package com.wjh.hello;

public class Hello {
    public static void main(String[] args) {
        //学会使用赋值运算符:+=  -=  *=  /=
        int a=10;
        int b=200;
        //a=a+b;
        a+=b;
        System.out.println(a);  //210

        byte i=10;
        byte j=20;
        //i=(byte)(i+j);
        i+=j;
        System.out.println(i);  //30

        int m=10;
        int n=5;
        System.out.println(m*=n);      //50
        m=10;
        n=5;
        System.out.println(m-=n);      //5
        m=10;
        n=5;
        System.out.println(m/=n);      //2
        m=10;
        n=5;
        System.out.println(m%=n);      //0

    }
}

 5.关系运算符

        是对数据进行条件判断的符号,最终会返回一个比较的布尔结果(false,true)。

package com.wjh.hello;

public class Hello {
    public static void main(String[] args) {
        //学会使用赋值运算符:+=  -=  *=  /=
        int a=10;
        int b=10;
        boolean rs =a==b;
        System.out.println(rs);     //true

        System.out.println(a==b);     //true
        System.out.println(a>b);     //false
        System.out.println(a<b);     //false
        System.out.println(a>=b);     //true
        System.out.println(a<=b);     //true
        System.out.println(a!=b);     //false

        int i=10;
        int j=5;
        System.out.println(i=j);        //5
    }
}

6.逻辑运算符

逻辑运算符概述
        可以把多个条件的布尔结果放在一起运算,最终返回一个布尔结果。
全部结果〉屏幕尺寸:6.95英寸及以上×运行内存:8GB ×"手机"

package com.wjh.hello;

public class Hello {
    public static void main(String[] args) {
        double size=9.8;
        double strong = 16;

        System.out.println(size >= 6.95 & strong >= 8);     //true
        System.out.println(size >= 10 | strong >= 8);       //true

        System.out.println(false);       //false
        System.out.println(true);       //true

        System.out.println(!false);       //true
        System.out.println(!true);       //false

        System.out.println("-----------------&&-----------------");
        int a = 10;
        int b = 20;
        System.out.println(a>100 && ++b>10);    //false
        System.out.println(b);    //20 因为 && 左边为false,右边不执行

        System.out.println("------------------||---------------");
        int i = 10;
        int j = 20;
        System.out.println(i>2 || ++j > 10);        //true
        System.out.println(j);      //20 因为 || 左边为true,右边不执行

    }
}

短路逻辑运算符

注意∶逻辑与“ & ”、逻辑或“ | ”:无论左边是false还是true,右边都要执行

 

7.三元运算符

三元运算符介绍
格式:

条件表达式?值1:值2;

执行流程:首先计算关系表达式的值,如果值为true,返回值1,如果为false,返回值2


 

package com.wjh.hello;

public class Hello {
    public static void main(String[] args) {
        System.out.println("-----定义三个整数,找出最大值在控制台上");

        int temp;
        int num1 = 78;
        int num2 = 15;
        int num3 = 75;

        int max = num1 > num2 ? num1 : num2;
        temp = max;
        int max2 = max > num3 ? max : num3;
        System.out.println(max2);       //78

        System.out.println("----------拓展知识---------");

        int max1 = num1 > num2 ? (num1 > num3 ? num1 : num3) : (num2 > num3 ?  num2:num3);
        System.out.println(max1);       //78
    }
}

8.运算符优先级

运算符优先级
        在表达式中,哪个运算符先执行后执行是要看优先级的,例如“*、/”的优先级高于”+、-”。


package com.wjh.hello;

public class Hello {
    public static void main(String[] args) {
        //优先级
        System.out.println(10 > 3 || 10 > 3 && 10 < 3);         //true
        System.out.println((10 > 3 || 10 > 3 )&& 10 < 3);       //false
    }
}

三.案例知识:键盘录入技术

需求:
        请完成Java程序与用户交互,比如录入用户输入的名称、年龄,怎么办?。

APl (Application Programming Interface,应用程序编程接口)

        Java写好的程序(功能代码),咱们可以直接调用。
        Oracle 也为Java写好的程序提供了相应的API文档(技术使用说明书)。

下载API文档:
http://www.oracle.com/technetwork/java/javase/downloads/index.html

键盘录入功能实现的三个步骤:

①:导包:告诉程序去JDK的哪个包中找扫描器技术
②:写一行代码代表得到键盘扫描器对象。
③:等待接收用户输入数据。

注意:
System、String在JDK中的Java.lang包下
lang包不需要我们导包,是默认的包。

package com.wjh.Scanner;
//1.导包操作(并不需要自己写,以后通过工具导入更方便)
import java.util.Scanner;

public class ScannerDemo {
    public static void main(String[] args) {
        //学会使用键盘录入技术
        //2.得到一个键盘扫描对象
        Scanner sc = new Scanner(System.in);

        //3.调用sc对象的功能等待接受用户输入的数据
        //这个代码会等待用户输入数据,直到用户输入并按回车键就会把数据拿到
        System.out.println("请输入您的年龄:");
        int age = sc.nextInt();     //nextInt返回一个int类型
        System.out.println("年龄是:"+age);

        System.out.println("请输入您的姓名:");
        String name = sc.next();    //nextInt返回一个String类型
        System.out.println("您的姓名是:"+name);
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员希西子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值