JAVA--SE基础知识二

Java基础语法

1.基础语法转换


Java中,⼀些数据类型之间是可以相互转换的。分为两种情况:⾃动类型转换和强制类型转换。

1.1隐式类型转:俗称自动类型转换

把⼀个表示数据范围⼩的数值或者变量赋值给另⼀个表示数据范围⼤的变量。这种转换⽅式是⾃动的,直接书写 即可。
例如:
int num=10;//定义一个变量并且赋值
double num1=num;//将int类型的值赋值给double类型  隐藏了一个隐式类型转换。
System.out.println(num1);

类型范围大小的关系图;(从小到大)。

byte<--short<--==char<--int<--long<--float<--double.

注意:整形默认的类型为:int,如果byte ,short,char类型参与到运算的时候会在底层自动转为int类型(隐式类型转换)。切记Boolean类型时无法参与类型转换的。

例如:

byte num=10;
byte num1=20;
//声明两个byte类型的变量
byte num2=num+num1;
//这样会报异常  类型不兼容
System.out.println(num2);
//正确的书写格式
int num3=num+num1;
System.out.println(num3);
//或者
byte num4=(byte)num+num1;
System.out.println(num4);
//或者
byte num1+=num;//+=不用考虑类型大小的问题  它会自动给你转换
System.out.println(num1);

1.2强值类型转换

把⼀个表示数据范围⼤的数值或者变量赋值给另⼀个表示数据范围⼩的变量。
书写规格:
强制类型转换的数据类型   变量名 =(转换数据类型)值或者变量;(分号必须是英文的)
例如:
double num1 = 5.5;
int num2 = (int) num1; // 将double类型的num1强制转换为int类型
System.out.println(num2); // 输出5(⼩数位直接舍弃)

注意: 强制类型转化会损失精度的。例如:num2的值应该是5.5,可是打印的值是5。

1.3类型转换案例

byte num=1;
byte num1=2;
byte num2=num+num1;
//这样写会报异常  因为byte参加了运算 会自动转换为int类型
byte num3=1+2;
//这样不会报异常 只要不超出byte范围即可

2.运算符


2.1算数运算符

运算符:对常量或者变量进⾏操作的符号
表达式:⽤运算符把常量或者变量连接起来符合 java 语法的式⼦就可以称为表达式。 不同运算符连接的表达式体现的是不同类型的表达式。

例如:

int num = 10;
int num1 =20;
int num2=num+num1;//+号是运算符 并且是算数运算符 
// num+num1是表达式由于+是算数运算符所以这个式子称之为算数表达式
System.out.println(num2);
符号作用说明
+找一年的同学去
-找一年的同学去
*找一年的同学去
/除(取商)找一年的同学去
%除(取余)找一年的同学去
注意:
1. / % 的区别:两个数据做除法, / 取结果的商, % 取结果的余数。
2. 整数操作只能得到整数,要想得到⼩数,必须有浮点数参与运算。
3.如果+运用在字符串中 起拼接的作用,用在算数表达式中起相加的作用。
例如:
int num = 10;
System.out.println(num/3);
//打印结果为3
System.out.println(num/3);
打印结果为1

2.3自增自减运算符

符号作用理解
++自增自身加1
--自减自身减1

提示:

1.++-- 既可以放在变量的后边,也可以放在变量的前边

2.++(++i)在前先自增后取值,++(i++)在后先取值后自增。

3.单独使用的话,无论放在前面还是后面  运行结果都是一样的。

4.最常见的用法就是:单独使用。

//单独使用的时候  ++在前
int a=10;
a++;
System.out.println("a:"+a);//结果为:a:11。
// ++在后的时候
int b=10;
++b;
System.out.println("b:"+b);//结果为:b:11。
int x = 10;
//参与赋值的时候
int y = x++; // 赋值运算,++在后边,所以是使⽤x原来的值赋值给y,x本身⾃增1
System.out.println("x:" + x + ", y:" + y); // x:11,y:10
int m = 10;
int n = ++m; // 赋值运算,++在前边,所以是使⽤m⾃增后的值赋值给n,m本身⾃增1
System.out.println("m:" + m + ", m:" + m); // m:11,m:11

2.3.赋值运算符


赋值运算符的理解:是将⼀个表达式的值赋给左边,左边必须是可修改的,不能是常量。

符号作用理解
=表示赋值将等号右边的值赋值给左边的变量(a=10);
+=表示加后再赋值左边的一个变量加上一个值或者赋值过后的变量,将相加后的值赋值给左边的变量。(int a+=10)。
-=表示减后再赋值左边的一个变量减去一个值或者赋值过后的变量,将相减后的值赋值给左边的变量。(int b-=10)。
*=表示乘后再赋值左边的一个变量乘上一个值或者赋值过后的变量,将相乘后的值赋值给左边的变量。(int c*=10)。
/=表示除后取商再赋值左边的一个变量除上一个值或者赋值过后的变量,将除后的商赋值给左边的变量。(int d/=10)。
%=表示除后取余再赋值左边的一个变量除上一个值或者赋值过后的变量,将相除后的余数值赋值给左边的变量。(int f%=10)。

小提醒:赋值运算符隐藏了隐式类型转换和强制类型转换哟。

示例:

byte num =10;
num = num +20;//这样写会报异常  类型不兼容  因为byte参与运算的情况下会在底层自动转换成int类型。
System.out.println(num);
num +=20;//这样写就不会报异常 因为+=隐藏了强制类型转换  这样写相当于 num =(byte)num+20;
System.out.println(num);

2.4关系运算符

关系运算符有六种:大于,小于,等于,大于等于,小于等于,不等于。

符号作用说明
>表示大于a>b判断a是否大于b,若为真返回true,反之false。
<表示小于a<b判断a是否小于b,若为真返回true,反之false。
==表示等于a==b判断a是否等于b,若为真返回true,反之false。
>=表示大于等于a>=b判断a是否大于等于b,若为真返回true,反之false。
<=表示小于等于a<=b判断a是否小于b,若为真返回true,反之false。
!=表示不等于a!=b判断a是否不等于b,若为真返回true,反之false。

注意:

          1.关系运算符的返回值类型为Boolean类型,要么为true,要么为false。

          2.千万不要把"=="写成"=",这样就成为赋值运算符喽哟。

          3.如果是判断字符串的话就不能使用==号,必须使用equals。

2.5逻辑运算符

理解:逻辑运算符把各个运算的关系表达式连接起来组成⼀个复杂的逻辑表达式,以判断程序中表达式是否成⽴,判断 的结果是 true false
符号作用说明
&逻辑与表达式1&表达式2,表达式1和2如果一个或都为true,返回值为true,如果有一个为false,返回值为false。
|逻辑或表达式1|表达式2,表达式1和2如果有一个为true另一个为false,返回值为true,如果都为false,返回值为false。
^逻辑异或表达式1&表达式2,表达式1和2如果一个为true一个为false,返回值为true,如果都为true或false,返回值为false。
!逻辑非当操作原的值为false的时候结果为true ,反之结果为true的时候结果为false。

 示例:

int j = 20;
int k = 30;
//& “与”,并且的关系,只要表达式中有⼀个值为false,结果即为false
System.out.println((i > j) & (i > k)); //false & false,输出false
System.out.println((i < j) & (i > k)); //true & false,输出false
System.out.println((i > j) & (i < k)); //false & true,输出false
System.out.println((i < j) & (i < k)); //true & true,输出true

2.6短路逻辑运算符

符号作用说明
&&短路与
作⽤和 & 相同,但是有短路效果
||短路或
作⽤和| 相同,但是有短路效果

在短路与中只要有⼀个表达式的值为false,那么结果就可以判定为false了,没有必要将所有表达式的值都 计算出来,短路与操作就有这样的效果,可以提⾼效率。同理在逻辑或运算中,⼀旦发现值为true,右边的表达式将不再参与运算。

小提醒:

  • 逻辑与&,⽆论左边真假,右边都要执⾏。
  • 短路与&&,如果左边为真,右边执⾏;如果左边为假,右边不执⾏。
  • 逻辑或|,⽆论左边真假,右边都要执⾏。
  • 短路或||,如果左边为假,右边执⾏;如果左边为真,右边不执⾏。

逻辑运算符和比较运算符和关系运算符的区别:比较运算符和关系运算符两个操作的对象是布尔类型    而位运算符操作的可以是整数类型和char类型。
如果操作的是char类型的话编译器会自动将char类型转换成ASCII码值来进行计算。

2.6移位运算符

也是针对整数类型的 也可以是char类型 但是进行char使用的话他会自动转化为ASCII码值。但是值得注意的是对byta short  char的话会自动升级为int类型 再来进行运算

符号作用理解
<<左移运算符左边最高位丢弃 右边补去0。向左移动几位就是乘以2的几次方。
>>右移运算符右边最高位是0,则左边补齐0,最高为是1则左边补齐1。向右移动几位就是除以2的几次幂。
>>>无符号右移运算符无论最高位是0还是1 左边都会补齐0.

2.7三元运算符

三元运算符的格式为:(条件表达式)?表达式一:表达是二;

怎样运行:如果条件表达式为true 则运行表达式一,反之运行表达式二。

示例:

public class OperatorTest02 {
 public static void main(String[] args) {
 //1:定义三个变量⽤于保存和尚的身⾼,单位为cm,这⾥仅仅体现数值即可。
 int height1 = 150;
 int height2 = 210;
 int height3 = 165; 
 //2:⽤三元运算符获取前两个和尚的较⾼身⾼值,并⽤临时身⾼变量保存起来。
 int tempHeight = height1 > height2 ? height1 : height2; 
 //3:⽤三元运算符获取临时身⾼值和第三个和尚身⾼较⾼值,并⽤最⼤身⾼变量保存。
 int maxHeight = tempHeight > height3 ? tempHeight : height3; 
 //4:输出结果
 System.out.println("maxHeight:" + maxHeight);
 } }

3.运算符的优先级与综合方向

优先级含义运算符结合方向
1分隔符   [],()由左至右
2单目运算符,字符串运算++,--,+(一元),-(一元),~,!(类型转换符)由右至左
3算数乘除运算*,/,%    由左至右
4算式加减运算符+,-由左至右
5比较运算符  >,<,>=,<=,!=由左至右
.........................

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值