Java基础学习_03

今日复习

语法

  1. 标识符:类名、方法名、变量名、

  2. 命名规则:必须遵守,不然编译错误

    1. 由数字、字母、$、_ 组成
    2. 不能以数字开头
    3. 区分大小写
    4. 不能是Java关键字
  3. 命名规范:程序员的开发习惯

    1. 尽量增加可读性
    2. 类名所有单词首字母大写 变量名 除了第一个单词 其它单词首字母大写
  4. 关键字:java中被赋予特殊含义的单词或者字符

  5. 目前学过的:class package public static void byte short int char long float double boolean true false

  6. 数据类型:

    1. 先按数据的性质分类 再按空间大小分类
      1. 整数类型:不带小数点的数字
        1. byte:字节型 java描述数据的基本单位 取值范围:[-128,127]
        2. short:短整型 1 short = 2 byte 取值范围:[-30000,30000]
        3. int:整性 1 int = 4 byte 整数常量默认是int类型
        4. long:长整型 1 long = 8 byte long类型的常量值后面加l/L
      2. 浮点类型:带小数点的数字
        1. float:单精度 小数点后有效位数为6 到 8位 float类型的常量值后面加f/F 1 float = 4 byte
        2. double:双精度 小数点后有效位数是12位 浮点类型默认是double类型 1 double = 8 byte
      3. 字符类型:所有的符号
        1. char :字符型 必须写在单引号中 单引号中有且只有一个字符 1 char = 2 byte 字符和整数之间可以通过编码集相互转换
      4. 布尔类型:只有两种结果 并且是想反的
        1. boolean:布尔型 只有两个值:true、false 1 boolean = 1 byte
  7. 运算后结果的数据类型

    1. 数据类型精度:byte-short-int(char)-long-float-long
    2. byte\short\char\不能直接参加运算 必须先自动提升为int才能运算
    3. 运算后结果的数据类型取决于精度最高的数据
  8. 运算符

    1. 算术运算符
      1. % : 求余、取模、取余
      2. n%m= n除以m得到一个整数 除不尽的那部分
      3. n%m= 结果的正负取决于n
      4. 获取各个位数的值:取头用除 取尾用%
    2. 比较运算符
    3. 赋值运算符
    4. 逻辑运算符
    5. 位运算符
    6. 三元运算符

今日内容

一. 语法

1.运算符

  1. 算术运算符

  2. % : 求余、取模、取余
    -n%m= n除以m得到一个整数 除不尽的那部分
    -n%m= 结果的正负取决于n
    -获取各个位数的值:取头用除 取尾用%

  3. +: 加法号

- 加法运算   a  =  1+ 1
- 正数:
- 字符串连接符:
System.out.println(1+"abc");
  1. 自增、自减
a=3;a++     //等价于 a = a + 1
System.out.println("a="+a); //4
a=3;a--     //等价于a =  a- 1
System.out.println("a="+a);//2
  1. 比较运算符:>,>=,<,<=,==,!=

  2. ==:恒等:判断两边的数据是否相等

System.out.println(1 == 2); //flase
  1. !=:不等:判断两边的数据是否不相等
System.out.println(1 != 2);//true
  1. 注意:

    1. 运算后的结果是boolean类型的值
    2. >,>=,<,<=仅只能操作数字类型的数据
  2. 赋值运算符:+= -= *= %= /=

a=3;a+=4;//等价于a = a+4
System.out.println("a="+a); //7
a=3;a-=4;//等价于a = a-4
System.out.println("a="+a); // -1
a=3;a*=4;//等价于a = a*4
System.out.println("a="+a);  //12
a=3;a/=4;//等价于a = a/4
System.out.println("a="+a);  //0
a=3;a%=4;//等价于a = a%4
System.out.println("a="+a);  //3
//n % m 的取值范围为[0,m-1]
  1. 逻辑运算符:进行逻辑判断的运算符 逻辑运算符只能操作boolean数据 逻辑运算符结果是boolean
  • & 单与 只有两边都为true 结果才为true

    System.out.println("true&flase="+(true&false)); //false
    System.out.println("true&true="+(true&true));
    System.out.println("flase&flase="+(false&false));//false
    System.out.println("flase&true="+(false&true)); //false
    
    • && 双与 只有两边都为true 结果才为true

      System.out.println("true&&flase="+(true&&false));//false
      System.out.println("true&&true="+(true&&true));// true
      System.out.println("flase&&flase="+(false&&false));//false
      System.out.println("flase&&true="+(false&&true));//false
      
    • | 单或 只有两边都为false 结果才为false

      System.out.println("true|flase="+(true|false));//true
      System.out.println("true|true="+(true|true));//true
      System.out.println("flase|flase="+(false|false));// false
      System.out.println("flase|true="+(false|true));//true
      
    • || 双或 只有两边都为false 结果才为true

      System.out.println("true||flase="+(true||false));//true
      System.out.println("true||true="+(true||true));//true
      System.out.println("flase||flase="+(false||false));// true
      System.out.println("flase||true="+(false||true));//true
      
    • ! 取反 ! true = false ! false = true

    • ^ 异或 两边相同则为false 两边不同则为true

      System.out.println("true^flase="+(true ^ false));//false
      System.out.println("true^true="+(true ^ true)); // true
      System.out.println("flase^flase="+(false ^ false)); // true
      System.out.println("flase^true="+(false ^ true));//false
      
  1. 位运算符:对数字的二进制进行位运算 >> 位运算符操作的数据的二进制

  2. 进行 | ^ & 运算时 二进制的0当false 1当true

  3. << 左移 : n<<m 在n的二进制后面加m个0

  4. >> 右移 : n>>m 删除n的二进制后m位删除

System.out.println(13 >> 2)  //3
System.out.println(13 << 2)  //52
System.out.println(13 | 2)  //15
System.out.println(13 & 2)  //0
System.out.println(13 ^ 2)  //15
  1. 三元运算符:可以执行一个简单的选择

  2. 格式:boolean ? 值1:值2 boolean为true时 取值1 否则取值2

    int c;
    c = 1<2?3:4;
    System.out.println(c);
    
  3. 实例:获取两个变量中的大值

    int a1=3,a2=9;  //变量的值来源:页面、数据库
    int max;
    int max = a1>a2?a1:a2;
    System.out.println(a1+"、"+a2+"的大值是"+max);
    int min = a1<a2?a1:a2;
    System.out.println(a1+"、"+a2+"的小值是"+min);
    
  4. 实例:获取三个值中b1,b2,b3的最大值

    //先获取两个值得最大,再和第三个比较、
    int maxb;
    maxb = b1>b2?b1:b2;
    maxb = maxb>b3?maxb:b3;
    System.out.println(b1+"、"+b2+"、"+b3+"的大值是"+maxb);
    maxb =(b1>b2&&b1>b3)?b1:(b2>b3?b2:b3);
    maxb = b1>b2?(b1>b3?b1:b3):(b2>b3?b2:b3);
    

二. 数据类型转换

七种数字类型的数据可以相互转换

数据类型精度表:byte-short-int(char)-long-float-double

  1. 变量赋的值的类型必须和变量一致 如果类型不一致 会自动类型转换
float f1 = 1f;    //编译器会自动把int类型的1转换为float类型的1  然后赋值给变量f1
System.out.println(f1);  //1.0f
  1. 自动类型转换规则

  2. 低精度数据可以自动转换为高精度的数据 格式 : 高精度变量 = 低精度值

    f1 = b1;f1 = s1;f1 = i1;f1 = l1;
    b1 = s1;b1 = c1;b1 = i1;   //报错
    i1 = b1;f1 = c1;l1 = s1; 
    
  3. 给byte、char、short类型的变量赋值int类型的常量值 会自动检查范围 判断是否溢出

    • 格式:byte/short/char类型的变量 = int常量值
    b1 =12;//编译器会自动把4个字节的int类型12 自动转换为1个字节byte类型的12,然后赋值
    b1 = 12;b1 = -11; 
    b1 = -129;b1 = 199;  // 报错
    s1 = 12;s1 = 133; 
    s1 = 48888;s1 = -48888//报错
    c1 = 67;
    c1 = 67;
    c1 = i1;   //报错  溢出
    
    b1 = b1+1;// 报错: b1+1结果是int类型的变量  不能发生自动类型转换
    c1 = s1;
    c1 = b1;
    b1 = c1; //报错  :char只能和int之间转换 不能在byte、short之间转换
    
    s1 += 1;  s1=short)(s1+1// 赋值运算符会自动进行数据类型转换
    s1 = s1 + 1;   //报错  左边是short类型  右边会直接转换为int类型
    s1 = s1 + s1;  //报错 short类型不能直接参加运算 ,必须转换成int类型
    
  4. 强制类型转换:强制的把高精度值赋值给低精度变量

  • 格式: 低精度变量 = (低精度类型)高精度值;
  • 强制类型转换 谨慎使用 数据精度会丢失
s1 = (short)i1;
i1 = 200;
b1 = (byte)i1;
System.out.println("b1="+b1); // b1=-56
  1. 总结:
    在这里插入图片描述

练习

public class GrammerDataTypeChangeTest {
	public static void main(String[] args) {

		byte b1=1;
		short s1=1;
		char c1=1;
		int i1=1;
		long l1=1;
		float f1=1;
		double d1=1;
		
		b1=112;  //byte类型的取值范围[-128,127] 112为int类型,自动转化为byte,无溢出,把4个字节int类型的常量112自动转换为1个字节byte类型的122  然后赋值
		b1+=10;  //强制类型转换:完全等价于b1 = (byte)(b1+10)
        
        
		s1=b1;    // 自动类型转换:低精度值可以自动转换为高精度数据
		s1=b1+1;  //byte、short、char类型的数据不能直接进行运算,必须转化成int类型的数据 b1+1是int类型的数据,精度高于左边s1的精度,不能转换成short类型	
        
		s1=c1;    // char只能和int之间进行转换、不能在byte、short之间转换
		c1=1999;  //  自动类型转换情况2:int类型的数值可以转换成char类型 
		i1=1999;
		c1=i1; //溢出  i1为int类型变量  不能将范围较小的变量赋给范围较大的变量 把高精度变量i1的值赋值给低精度变量c1需要强制类型转换


		l1=9999999;    //自动类型转换1:9999999为int类型数据  可以赋值给long类型
		l1=9999999999999;  //溢出  9999999999999为int类型  数值本身超出int类型范围[-2147483648——2147483647]报错
		f1=l1;     //低精度值可以自动转换为高精度数据


		f1=1;    //1为int类型  可以自动转换为float类型 赋值给f1
		f1=1.0;  //1.0为double类型,不能复制给f1
		f1=(float)d1+1;  //强制类型转换  复制一份d1的值 强制转换为flaoat类型,然后赋值


		b1=(byte)b1+1;    //b1与1相加后为int类型数据  不能赋值给byte类型
		b1=(byte)(b1+1);  //强制类型转换
	}

}

三. 流程控制

  • ​ 通过 java 关键字来控制代码的执行流程
  1. 顺序结果:默认的执行顺序
  • 从左到右 从上到下
System.out.println(11);System.out.println(12);
System.out.println(11);System.out.println(13);
System.out.println(11);System.out.println(114);
  1. 选择结构:根据条件是否成立 来选择是否执行对应代码块

  2. if else

  1. 单分支:if(条件表达式){条件表达式成立时 要执行的代码}
    条件表达式:结果是boolean类型的句子
char sex = '女';
		if(sex == '女'){
			System.out.println("请坐到我身边");
		}
  1. 双分支:if(条件表达式){条件表达式成立时 要执行的代码}else{不成立时 执行的代码}
int age = 19;
		if(age < 18){
			System.out.println("age="+age+"小弟!");
		}
		else{
			System.out.println("age="+age+"大哥!");
		
		}
  1. 多分支:if(){}else if(){}else if(){}…else{}
float score = 91;
if(score<60){
   System.out.println("score="+score+",不及格!");
}else if(score>=60&&score<70){
   System.out.println("score="+score+",及格!");
}else if(score>=70&&score<80){
   System.out.println("score="+score+",良好!");
}else if(score>=80&&score<90){
   System.out.println("score="+score+",优!");
}else{
   System.out.println("score="+score+",优秀!");
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值