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
自动类型转换:

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

规则:
char->int->long->float->double
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结构:

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

1.2if-else结构

if(表达式){
语句体1
}else{
语句体2
}

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

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

1.3if-else if结构

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

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

1.4swicth-case结构

swicth(表达式){
     case 常量1:
      表达式1;
      break;
      case 常量2:
      表达式2;
      break;
      case 常量3:
      表达式3;
      break;
      default:
      表达式n;
      break;
}

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

int num=89;
switch(num/10){
         case 10:
          表达式1;
          break;
          case 9:
          表达式1;
          break;
}

另外一个问题: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中的数,输出。

        Scanner sc=new Scanner(System.in);
        int a=sc.nextInt();
        int b=sc.nextInt();
        if(a>=b){
            int temp=a;
            a=b;
            b=temp;
        }
        System.out.println("a="+a);
        System.out.println("b="+b);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值