JavaSe基础篇2

JavaSe基础篇2

1. 数据类型转换

1.1 数据类型转换分类

数据类型转换包括以下两种类型:

  • 自动类型提升:小范围类型的数据赋值给大范围类型的变量
  • 强制类型转换:大范围类型的数据赋值给小范围类型的变量(可能会造成数据损失精度)

注意点:

  • 布尔类型不参与类型转换
  • 变量参与运算时,最后会统一提升成为最大的类型
  • byte,short,char类型运算时,最后结果类型会提升为int类型
  • 在为byte,short,char类型赋值时,只要是其范围内的“常量”都能成功赋值
  • 常量看范围,变量看类型
  • 可表示数值大小来看,byte<short<int<long<float<double
  • char类型参与四则运算,会先转为字符
  • 布尔类型不参与类型转换

1.2 强制类型转换

小范围类型 变量 = (小范围类型)大范围类型数据

//强制类型转换
byte a = (byte)129;
System.out.println(a);  //输出-128

//char
char ch = 'a';
short b = (short)(ch + 1);
System.out.println(b); //输出98

//long
long money = (long)12 * 1000000000;//或者long money = 12 * 1000000000L;
System.out.println(money); 

注:如果数值本身已超过强制转换类型的范围,输出的结果并非去除超出的部分,而是以下图方式发生改变。

2. 运算符

2.1 算数运算符

算术运算符即数学中的“+”,“-”,“*”,“/”加上一个“%”。

  • “+”:代表正号,加法运算,同时也能用作字符串的连接符使用。

    (当运算符左右两边一旦出现字符串,+就作为字符串的连接符使用,最终把两边数据拼接,得到一个新的字符串)

  • “-”:负号,减法运算

  • “*”:乘法

  • “/”:除法,取整

  • “%”:求余数,当第一个操作数小于第二个操作数时,结果为第一个操作数

int a = 1+3;
int b = 1;
int c = 5;
System.out.println("a=" + a);  //"a=4"
System.out.println("b = "+b);  //"b = 1"
System.out.println("hello"+'a'+1);  // "helloa1"
System.out.println('a'+1+"hello");  // "98hello"
System.out.println(5/1);  //5
System.out.println(5%1);  //0
System.out.println(1%5);  //1

2.2 单目/一元运算符

  • “++”:自增即自身+1
  • “–”:自减即自身-1

当操作数只影响自身时,“++”“–”放在操作数前后都是自身加减1。

当操作数影响别人时,“++”“–”放在操作数前是先自身变化再做运算;“++”“–”放在操作数后是先做运算再自身变化。

int a = 3;

//影响自己
a++;  //a= a +1;
System.out.println(a);  //4
--a;  //a=a-1;
System.out.println(a);  //3

//影响别人
int b = a++;  //1)先做赋值 int b = a;  2)再自身+1  a++;
System.out.println(a);   //4
System.out.println(b);   //3
int c = b++ + 5;
System.out.println(b);  //2  
System.out.println(c);  //6 

2.3 赋值运算符

  • 基础赋值运算符“=”:等号是java中唯一一个自右向左运算的符号

  • 扩展赋值运算符(算数运算符+基础赋值运算符):

    例如+=:a+=b即a=a+b

    同理还有“-=”,“*=”,“/=”,“%=”

    扩展赋值运算符的优点:执行效率高,帮助自动做强制类型转换(++也可以实现自动强制类型转换)

int result = 0;
int zhang = 100;
result += zhang ; //result = result + zhang;
int wang = 98;
result += wang; //result = result + wang;

2.4 比较/关系运算符

比较运算符得到的结果为boolean类型,有以下两种:

  • “>”,“<”,“>=”,“<=”:用于基本数据类型的比较
  • “==”,“!=”:用于基本数据类型和引用数据类型的比较
int a = 3;
int b = 4;
System.out.println(a>b);  //false
System.out.println(a+1<=b);  //true
System.out.println("zhangsan" != "lisi");   //true
System.out.println(a+3 == b+2);   //true
boolean flag = ++a == b;
System.out.println(flag);//true

2.5 逻辑运算符

逻辑运算符的操作数只能为值是boolean类型的表达式或者值,有以下几种:

  • "&"与:一个为false就是false,两个都为true才是true
  • "|"或:一个为true就是true,两个都为false才是false
  • "^"异或:相同为false,不同为true
  • "!"非(取反):!true = false,!false = true
  • 短路:如果第一个操作数已经能够决定最终的结果了,第二个操作数就不看了。短路分为"&&"(短路与)和"||"(短路或)
System.out.println(true&false);  //false
System.out.println(true|false);  //true
System.out.println(true^false);  //true
System.out.println(true^true);   //false
System.out.println(!false);  //true
System.out.println(true&&false);  //false
System.out.println(true&&true);   //true

2.6 条件运算符

表达式?值1:值2(表达式值为true结果为值1,表达式结果为false结果为值2)

int a = 5;
int b = 6;
int c = 4;

//求a与b的最大值,这个数据值
int result = a>b ? a : b;
System.out.println(result);

//判断a是否为偶数
str = a % 2 == 0 ? "偶数" : "奇数";
System.out.println(str);

//有三个变量,通过条件运算符,求出最大的值
int max = a > b && a > c ? a : (b > c ? b : c);
System.out.println(max);

2.7 运算符优先级

记住一个口诀:单目算数位关系,逻辑三目后赋值。单目运算优先级最高,赋值运算优先级最低。

//运算符优先级
a=5  b=6
boolean x = a < b ?( ++a * 2 > b | (a*=2) ==12 ): (a < b);

System.out.println(x); //true
System.out.println(a); //6

3. Scanner类

Scanner类接收用户键盘输入的内容,具体使用步骤如下:

  1. 导包:

    import java.util.Scanner;
    
  2. 构建一个Scanner类型的变量:

    Scanner sc = new Scanner(System.in);
    
  3. 使用功能:

    • 引用.nextByte() 接收用户输入的byte类型的数据
    • 引用.nextShort() 接收用户输入的short类型的数据
    • 引用.nextInt() 接收用户输入的int类型的数据
    • 引用.nextLong() 接收用户输入的Long类型的数据
    • 引用.nextFloat() 接收用户输入的float类型的数据
    • 引用.nextDobule() 接收用户输入的double类型的数据
    • 引用.next() 接收用户输入的字符串,从有效字符开始接收,遇到空格|tab不再继续接收内容,知道遇到enter结束功能
    • 引用.nextLine() 接收一整的内容,知道遇到enter结束功能
  4. 关闭:

    sc.close();
    

    在当前类中使用完毕Scanner之后关闭资源,这是良好的开发习惯

//1.导包
//2.构建一个Scanner类型的变量
Scanner sc = new Scanner(System.in);
//3.使用功能	
System.out.println("请输入您的年龄");
int age = sc.nextInt();
System.out.println(age);

System.out.println("请输入您的月薪");
double salary = sc.nextDouble();
System.out.println(salary);

System.out.println("请输入您的名字");
String name = sc.next();
System.out.println(name);

//遗留anter问题
sc.nextLine();

System.out.println("请输入您的用户名");
String username = sc.nextLine();
System.out.println(username);

//关闭
sc.close();
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值