Java02基础语法

Java02基础语法

一、Java基础语法(续)

1、变量

变量就是内存中的存储空间,空间中存储着经常发生改变的数据

  • 定义格式:

    数据类型 变量名 = 数据值;

    int salary = 12000;     //定义一个整型变量salary,并赋值12000;

    注意:代码中等号右边的值给等号左边赋值!!!

  • 使用

    根据变量名进行使用

    salary = 15000;     //根据变量名salary修改变量值为15000;
  • 注意事项

    • 变量名不允许重复定义

    • 一条语句可以定义多个变量,中间使用逗号分隔

      int a,b;     //定义两个整形变量a和b
      a=5;b=10;   //给变量a、b赋值
    • 变量在使用之前一定要进行赋值

    • 变量的作用域范围

2、Debug工具

Debug是供程序员使用的程序调试工具,它可以用于查看程序执行流程,也可以用于追踪程序执行过程来调试程序

Debug调试

又被称为断点调试,断点其实是一个标记,告诉Debug从标记的地方开始查看

  • 如何加断点

    选择要设置断点的代码行,在行号的区域后面单击鼠标左键即可。

  • 如何开启Debug运行

    在代码区域右键 Debug 执行

    • 点Step Over 这个箭头向下执行一步,也可以直接按 F8

    • 点 Stop 结束

  • Debug控制台需要关注的信息

    • frames窗口

      查看程序中正在执行的方法

    • Variables窗口

      查看变量以及变量的变化过程

    • Console窗口

      查看程序打印内容

  • 如何删除断点

    如果是多个断点,可以每一个再点击一次。也可以一次性全部删除

3、标识符

标识符就是给类,方法,变量等起名字的符号

  • 标识符的命名规则

    • 由数字、字母、下划线(_)和美元符($)组成

    • 不能以数字开头

    • 不能是关键字

    • 区分大小写

  • 标识符的命名规范

    • 小驼峰命名

      标识符是一个单词的时候,所有字母小写;标识符由多个单词组成的时候,从第二个单词开始,首字母大写

    • 大驼峰命名

      标识符是一个单词的时候,首字母大写;标识符由多个单词组成的时候,每个单词的首字母大写

4、数据类型

基本数据类型(四类8种)
  • 整数:byte、short、int、long

  • 浮点数:float、double

  • 字符:char

  • 布尔:boolean

取值范围以及内存占用情况

♥细节补充

所有整数默认int,所有小数默认double;char的取值范围是数值范围,因为根据ASCII编码表(编码表是计算机中字节到字符的一套对应关系)给出了每个字符所对应的底层二进制表示,其值就是将底层表示转换为对应的十进制的值。

使用思路

1、整数类型:首选int,如果发现int装不下了,将类型换成long类型(需要在数值后面加入L的标识)

2、小数类型:首选double,非要定义float类型的变量,需要在数值后面加入F标识

引用数据类型

5、Scanner键盘录入

引入

键盘录入可以使程序中使用的数据更加灵活

使用步骤

1、导包

import java.util.Scanner;

2、创建对象

Scanner sc = new Scanner(System.in);

3、定义变量接收录入的整形数据

int age = sc.nextInt();     //定义定义变量接收录入的整型数据
String name = sc.next();    //定义变量接收录入的字符串

二、运算符

1、运算符

1.1运算符和表达式
  • 运算符:对字面量或者变量进行操作的符号

  • 表达式:用运算符把字面量或者变量连接起来的符合java语法的式子就可以称为表达式。不同运算符连接的表达式体现的是不同类型的表达式。

符号作用说明
+两个数做加法,取和
-两个数做减法,取差
*两个数做乘法,取乘积
/两个数做除法,取结果的商
%取余两个数做除法,取结果的余数
注意事项:
  • 整数操作只能得到整数,要想得到小数,必须有浮点数参与运算。

  • 取余运算的结果关乎被除数,被除数为正则结果为正,被除数为负则结果为负

数值拆分(小demo)

需求:键盘录入一个三位数,将其拆分为个位、十位、百位后,打印在控制台

分析:使用Scanner键盘录入一个三位数;

  • 个位的计算:数值%10

  • 十位的计算:数值/10%10

  • 百位的计算:数值/10/10%10

    类似的千位:数值/10/10/10%10

    万位:数值/10/10/10/10%10......

tips:求最高位的时候可以简化计算

最高位是百位:数值/100;最高位是千位:数值/1000;最高位是万位:数值/10000

public class OperatorTest {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个三位数:");
        int num = sc.nextInt();
​
        int ge = num%10;
        int shi = num/10%10;
        int bai = num/10/10%10;
​
        System.out.println("整数"+num+"的个位为:"+ge);
        System.out.println("整数"+num+"的十位为:"+shi);
        System.out.println("整数"+num+"的百位为:"+bai);
    }
}
1.2字符串拼接

当 + 操作中,遇到了字符串,这时 + 就是字符串连接符,而不是算术运算。

 public class Test{
        public static void main(String[] args) {
            System.out.println("年龄为:"+23+1);      //运行结果为:年龄231   可以理解成贪吃蛇原理,拼接的部分不断变成身体的一部分。“年龄为”这个字符串就是最开始的蛇蛇,因为是字符串所以后面+号为拼接,拼接23,变成“年龄23”,再遇到+号拼接1
        }
    }
  public class Test{
        public static void main(String[] args) {
            System.out.println("年龄为:"+(23+1);      //运行结果为:年龄24   括号的优先级很高,优先计算括号里,23+1没有字符串,所以是加法运算符,计算结果为24;再去前面的字符串拼接
        }
    }

2、自增自减运算符

符号作用说明
++自增变量自身的值加1
--自减变量自身的值减1
使用方式
2.1单独使用

++ 和 -- 无论是放在变量的前边还是后边,结果是一样的

2.2参与运算使用
  • 变量后

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

    int a = 10;
    int b = a++;   //a为11,b为10
  • 变量前

    在变量的前边,先对变量进行+1或-1,再拿变量的值进行运算

       int a = 10;
        int b = ++a;    //a为11,b为11

注意:++、--只能操作变量,不能操作常量

2.3分析demo
public class OperatorDemo {
    public static void main(String[] args) {
        int x =3;
        
                //4+4+50
        int y = (++x)+(x++)+(x*10);
        System.out.println(x);    //两次自增结果为5
        System.out.println(y);   //58   分析:第一个括号++x,先自增再运算,所以x以4参与,第二个括号x++,先运算再自增,x也是以4参加运算,然后自增为5,第三个括号执行时x已经变成5,所以是5*10
    }
}

3、类型转换

3.1隐式转换

把一个取值范围小的数值或者变量,赋值给另一个取值范围大的变量

运算过程中的隐式转换
  • 取值范围小的数据和取值范围大的数据进行运算,小的会先提升为大的之后,再进行运算

  • byte、short、char 三种数据在运算的时候,都会提升为int,然后再进行运算

    public class OperatorDemo1 {
        public static void main(String[] args) {
            byte a = 10;
            byte b = 20;
            byte c = a+b;    //此处byte会报错,因为byte类型做运算时会先提升为int,相当于两个int相加,结果为int类型,不能用byte接
        }
    }
    public class OperatorDemo1 {
        public static void main(String[] args) {
            int a = 1;
            char b = 'a';
            int c = a + b;     //结果为98,char类型转成int参与运算的是其对应的ASCII码值,a的ASCII码97
        }
    }
3.2强制转换

把一个取值范围大的数值或者变量,赋值给另一个取值范围小的变量时,不允许直接赋值,需要加入强制转换。

格式:

目标数据类型 变量名 = (目标数据类型)被强转的数据

public class OperatorDemo1 {
    public static void main(String[] args) {
        double a =12.3;
        int b = (int)a;
        System.out.println(b);    //结果为12
    }
}
注意事项:

避免强转,可能会造成精度丢失!!!

int a = 130;
byte b = (byte)a;    //结果为-126  
3.3类型转换面试题
byte b1 = 3;
byte b2 = 4;
byte b3 = b1 + b2;    //报错 b1和b2是两个byte类型, 相加的时候都会提升为int,提升之后就是两个int相加, 相加的结果还是int, 将int类型的结果赋值给byte类型的变量,属于大的给小的赋值, 不允许直接赋值.
           
​
/*
       解决方案: 
       方案1:      int b3 = b1 + b2;
       方案2:      byte b3 = (byte)(b1 + b2);
​
*/
​
byte b4 = 3 + 4;     //正确,不报错
/*
        疑惑点: 认为代码会有错误, 3 和 4 是两个字面量, 默认都是int, 相加的结果还是int
        回答: 不存在错误, 因为Java存在字面量优化机制
        在javac的时候(编译的时候), 就会将3和4相加, 计算出7
        字节码文件中(.class)实际代码为byte b4 = 7;
*/

4、关于进制

计算机中存储数据的单位是字节。每个字节在计算机底层,都是以二进制的形式进行体现的。

4.1进制分类及书写规范
  • 二进制

    • 二进制数据是用0和1两个数码来表示。进位规则是“逢二进一”,借位规则是“借一当二”

    • 书写规范:在数值前面带上0b

  • 十进制

    • 由0、1、2、3、4、5、6、7、8、9进行表示。逢十进一,借一当十。

    • 书写规范:一般我们所写的都表示十进制,没有特殊标识

  • 八进制

    • 采用0,1,2,3,4,5,6,7八个数字,逢八进1

    • 书写规范:在数值前面加上0

      System.out.printIn(09);   //会报错,0开头表示八进制数,但八进制中没有9
  • 十六进制

    • 用数字0到9和字母A到F(或a~f)表示,其中: a~f 表示10~15,这些称作十六进制

    • 书写规范:在数值前面加上0x

4.2二进制转十进制
公式法
8421转换法

二进制中, 每一位的1都是代表一个固定数值,把每一位的1代表的十进制数加起来得到的结果就是它所代表的十进制数。

4.3原码反码补码
原码

数据的二进制体现形式,一个字节由 8 个二进制位组成。最左侧的数据为高位,也叫符号位, 0 代表正数,1 代表负数,其余位,表示数值大小。

弊端:遇到负数运算,会出现错误

♥计算机在运算的时候,都是以二进制补码的形式在运算

反码

正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外

补码

正数的补码与其原码相同;负数的补码是在其反码的末位加1

5、赋值运算符

符号作用说明
=赋值a=10,将10赋值给变量a
+=加后赋值a+=b,将a+b的值给a
-=减后赋值a-=b,将a-b的值给a
*=乘后赋值a=b,将a ×b的值给a
/=除后赋值a/=b,将a/b的值给a
%=取余后赋值a%=b,将a/b的余数给a

!!!注意事项:扩展的赋值运算符隐含了强制类型转换

short s = 1;
s = s + 1;      //大给小报错
/*
     修改方案1:s = (short)(s + 1);        修改方案2:s += 1;
​
*/

6、关系运算符

符号说明
==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

!!!注意事项:关系运算符的结果都是boolean类型,要么是true,要么是false,千万不要把==误写成=,两者有本质区别

7、逻辑运算符

逻辑运算符连接布尔类型的表达式,或是值,可以用来整合多个条件为一段整体的逻辑

符号介绍说明
&逻辑与并且,遇false则false
|逻辑或或者,遇true则true
逻辑非取反
^逻辑异或相同为false,不同为true
&&短路与作用和&相同,但是有短路效果
||短路或作用和|相同,但是有短路效果
注意区分
  • 单与&和双与&&

    • &:无论左边为true或false,右边都执行

    • &&:如果左边为true,右边执行;如果左边为false,右边不执行

    public class Operator {
        public static void main(String[] args) {
            int x = 3;
            int y = 4;
                            //false &  false
            boolean result = ++x > 5 & y-- <4;
    ​
            System.out.println(result);      //false
            System.out.println(x);      //4
            System.out.println(y);     //3    逻辑与两边都要执行,y--变成3
        }
    }
    public class Operator {
        public static void main(String[] args) {
            int x = 3;
            int y = 4;
                            //false    
            boolean result = ++x > 5 && y-- <4;
    ​
            System.out.println(result);      //false
            System.out.println(x);      //4
            System.out.println(y);     //4   短路与不执行右边,y--不执行
        }
    }
  • 单或|和双或||

    • |:无论左边为true或false,右边都要执行

    • ||:如果左边为false,右边执行;如果左边为true,右边不执行

最常用的逻辑运算符:&&、||、!

8、三元(三目)运算符

8.1格式

判断条件 ? 值1 : 值2;

8.2执行流程

首先计算判断条件的值

如果值为true值**1**就是运算结果

如果值为false值**2**就是运算结果

8.3求最大值demo

需求:键盘录入三个整数,求出最大值并在控制台打印

public class OperatorDemo2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入三个整数:");
        int num1 = sc.nextInt();
        int num2 = sc.nextInt();
        int num3 = sc.nextInt();
        
        int tempMax = num1>num2?num1:num2;
        int max = tempMax>num3?tempMax:num3;
​
        System.out.println("最大值为:"+max);
    }
}

9、运算符的优先级

优先级运算符
1.(){}
2!、-、++、--
3*、/、%
4+、-
5<<、>>、>>>
6<<、<=、>、>=、instanceof
7==、!=
8&
9^
10|
11&&
12||
13?:
14=、+=、-=、*=、/=、%=、&=

记住一句话:与的优先级大于或!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值