• Java学习day01:数据类型、运算符、分支结构


    声明:该专栏本人重新过一遍java知识点时候的笔记汇总,主要是每天的知识点+题解,算是让自己巩固复习,也希望能给初学的朋友们一点帮助,大佬们不喜勿喷(抱拳了老铁!)


    Java学习:数据类型、运算符、分支结构

    一、数据类型

    1.变量

    组成:变量由三部分组成:类型+名称+数值

    概念:变量相当于内存中一个数据存储空间的表示

    2.数据类型

    基本数据类型
    布尔型boolean[1],存放true或者false
    字符型char[2],存放单个字符
    数值型整数类型:byte[1],short[2],int[4],long[8]
    浮点数类型:float[4],double[8]

    变量名字的命名规范

     1.首字母要小写 myBank
    2.一般数字,字母,_和$等组成的,但是数字不能开头  myBank_1
      3.小驼峰的命名规则(单词首字母大写),或者使用_连接多个单词myBankGood
     4.见名知意month、week、year
    5.不能使用Java的关键字 比如: int、short、double
    自动类型转换:

    精度小的自动转换为精度大的

    1. 规则:
    2. char->int->long->float->double
    3. byte->short->int->long->float->double
    1.系统首先自动将所有数据类型转换成容量最大的那种数据类型,再进行计算eg:
    int  n1=10;
    float d1=n1+1.1;//这就是错的,因为1.1是double数据类型,不能转成float
    float d1=n1+1.1f;//这个时候就可以了
    2.精度大的赋值给精度小的就会报错
    3.byte,short和char直接不会进行自动转换当把一个具体的值赋给byte时,编译器会先判断,如果是在byte的范围就可以,
    但是如果把一个int类型的值赋给byte是不行的
    4.byte,short,char三者之间可以进行计算,在计算时会转为int类型byte b1=1;
    byte b2=3;
    short  s1=2;
    short s2=b1+s1;//错误的
    int i1=b1+s1;//对的
    byte b3=b1+b2;//不可以,虽然是两个byte加减但是还是转为了int
    5.boolean不参与自动转换
    6.表达式结果的类型自动提升为操作数中最大的类型
    强制类型转换:

    将容量大的数据类型强制转换为容量小的数据类型,()强制类型转换符,但是可能造成精度降低或溢出

    1.强转符号()只针对最近的操作数有效eg:
    int x=(int)10*6.5;//错误的,double无法转int
    int x=(int)(10*6.5);//可以了
    2.char类型可以保存int的常量值,不能保存变量值,需要进行强转
    基本数据类型和String的转换:

    注意转换一定要是能转换的,不要出现"hello"转int

    基本数据类型->Stringeg:
    int n1=100;
    String s1=n1+"";//此时输出s1就是string 类型的100
    String->基本数据类型//eg:用到一个parse的方法,调用基本数据类型对应的包装类的相应方法
    String s5="123";
    int num1=Integer.parseInt(s5);
    double num2=Double.parseDouble(s5);
    float num3=Float.parse.Float(s5);
    boolean num4=Boolean.parseBoolean("true");
    String->基本数据类型特殊点的,String -> char:
    一般来说字符串转字符都是拿到第一个字符,用charAt(0)这一方法
    String s1="123";
    System.out.println(s1.charAt(0));//就会输出字符"1";
    引用数据类型 :

    1.类(class)   2.接口(interface)   3.数组[]


    二、运算符

    算术运算符:

    +  -  *  /  %  += -=  *=  /=  %=  ++  --

    关系运算符:

    >/=/<=/==/!=

    主要就是这么几个关系运算符,记住运算结果是Boolean类型,只有true/false,等式左边加不加括号都行

    逻辑运算符:

    1.&&——全为真才真
    ||——有一个为真则为真
    !——真假反转

    2.短路原则:&(逻辑与)和&&(短路与)
    二者都是全真为真,有假为假,区别在于短路与&&是当第一个为假时,JVM就不再判断第二个是真还是假,因为结果已经是假了,这样提高了效率,实际开发中也是常用这个

    而且如果是||和&&连用的话,如果第一个是||,且第一个为true,那么后面就都不会再执行。所以一班开发中都是单独使用&&或者单独使用||。很少出现混用的情况

    类似的逻辑或(|)和短路或(||)也是一样的道理

    逻辑异或^

    a^b,
    a,b不同,为真,相同,为假


    三、分支结构

    先学习语法格式和执行流程 

    1.1if结构:

    1. if(表达式){
    2. 代码
    3. }
    4. 表达式结果一定是Boolean类型的值,所以一定是关系或逻辑运算符的,如果为true才执行里面的代码

    1.2if-else结构

    1. if(表达式){
    2. 语句体1
    3. }else{
    4. 语句体2
    5. }

    写一个小案例:判断某一年是不是闰年。如果能被4整除,并且不能被100整除,或者能被400整除,就是闰年

    1. public static void main(String[] args) {
    2. int year =2023;
    3. if((year%4==0 && year%100!=0) || year%400==0 ){
    4. System.out.println(year+"是闰年");
    5. }else {
    6. System.out.println(year+"不是闰年");
    7. }
    8. }

    1.3if-else if结构

    1. if(表达式){
    2. 语句体1
    3. }else if(表达式){
    4. 语句体2
    5. }else if(表达式){
    6. 语句体3
    7. }else{
    8. 表达式4
    9. }

    哪个表达式为true就执行哪个表达式,一个比较经典的是根据学生成绩给分等级

    1.4swicth-case结构

    1. swicth(表达式){
    2. case 常量1:
    3. 表达式1;
    4. break;
    5. case 常量2:
    6. 表达式2;
    7. break;
    8. case 常量3:
    9. 表达式3;
    10. break;
    11. default:
    12. 表达式n;
    13. break;
    14. }

    是swicth后面表达式里的值去匹配case后的常量,匹配上了就执行。这里又考虑到那个经典案例:根据学生成绩给分等级。如何用swicth语句去实现呢?其实很简单的

    1. int num=89;
    2. switch(num/10){
    3. case 10:
    4. 表达式1
    5. break;
    6. case 9:
    7. 表达式1
    8. break;
    9. }

    另外一个问题:swicth表达式里的值可以是什么类型?
    可以是int 、 byte、 short、 char、jdk1.8及以后版本可以是string、枚举enum,其实主要就是int,byte和short可以是因为能转为int,而char可以则是因为可以转为ascll码表对应的数字,但是要记得加'',同时汉字是没有对应码表的。另外string类型要加""


    以上就是今天的知识点,下面做题:

    四、习题

    1.题目

    1、输入一个整数,判断这个整数是大于0,还是小于0,还是等于0。
    2、输入一个整数,如果这个整数等于0输出“生成了一只白猪”,如果输入的整数等于1输出“生成了一只黑猪”,如果输入的是2输出“生成了一只红猪”,如果不是这三个数就输出“生成了一只变形猪”。
    3、输出“你是男人吗?”,回答如果是:1,那么输出“原来你是男人呀,呵呵”,如果回答是:0,那么输出“你的性别难道是女?”。
    4、输入一个整数,如果输入的数大于等于1000,那么输出“输入的数>=1000”,否则的话就输出“输入的数<1000”。
    5、输入一个int型的数据,判断这个数是否能被2整除,如果能被2整除,那么输出“这个数是偶数”,否则输出“这个数是奇数”。提示:8%2==0  10%2==0

    9%2=1

    6.输入两个整数,计算他们的和,如果和大于100,就输出这两个数的乘积,如果和小于100,就输出这两个数的商
    7、输入两个整数,放入到a与b变量中去,如果a>=b就将a与b中的值进行交换,否则就不交换。目地就是要让a中放的值总是小于或等于b中的数,输出。

    建议初学者都敲一敲,很多东西看着会,实际自己上手敲的时候往往会出错。这次习题都比较简单,我就不出答案了,最后一题涉及到输入输出,给一个:具体知识点看下一节。

    2.部分习题参考答案

    7、输入两个整数,放入到a与b变量中去,如果a>=b就将a与b中的值进行交换,否则就不交换。目地就是要让a中放的值总是小于或等于b中的数,输出。

    1. Scanner sc=new Scanner(System.in);
    2. int a=sc.nextInt();
    3. int b=sc.nextInt();
    4. if(a>=b){
    5. int temp=a;
    6. a=b;
    7. b=temp;
    8. }
    9. System.out.println("a="+a);
    10. System.out.println("b="+b);

  • 相关阅读:
    vscode保存格式化自动去掉分号、逗号、双引号
    关于electron中使用ffi-napi窗口遍历的过程及问题
    基于Nodejs和mysql的工具市场客户信息管理系统
    SpringBoot基于javaweb的养老院敬老院管理系统
    工信部数据传输安全形势和挑战
    SpringMVC的@InitBinder的作用
    JQ语法 选择器 事件
    springboot整合mybatis实现增删改查
    Java的Lambda表达式学习笔记
    前端常见面试题之react高级特性(Portals、Context、HOC等)
  • 原文地址:https://blog.csdn.net/LF__plus/article/details/132857173