数据类型中补充的几个小问题
- 在定义long或者float类型变量的时候,要加L或者f。
- 整数默认是int类型,浮点数默认是double。
- byte,short在定义的时候,他们接收的其实是一个int类型的值。
- 数据类型转换之默认转换 byte,short,char--int--long--float--double 问题:long:8个字节;float:4个字节。A:它们底层的存储结构不同。B:float表示的数据范围要比long的范围大。
- Java语言中的字符char可以存储一个中文汉字?能;因为Java语言中的字符占两个字节
算术运算符
1 package com.itheima.demo01; 2 /* 3 * 运算符 4 * 就是对常量和变量进行操作的符号 5 * 6 * 注意事项: 7 * A:整数相除只能得到整数,如果相得到小数,必须把数据变化为浮点数类型 8 * B:/获取的是操作的商,%获取的是操作的余数 9 */ 10 public class OperatorDemo { 11 public static void main(String[] args) { 12 //定义变量 13 int x = 3; 14 int y = 4; 15 16 System.out.println(x+y); 17 System.out.println(x-y); 18 System.out.println(x*y); 19 System.out.println(x/y);//整数相除只能得到整数 20 //结果:7;-1;12;0; 21 //我就想得到小数,该怎么办? 22 //只需要把操作的数据中任意的一个数据变为浮点数 23 System.out.println(x*1.0/y);//0.75 24 25 //%的应用 26 System.out.println(x%y);//3 得到的是余数 27 } 28 }
1 package com.itheima.demo01; 2 /* 3 * ++ --运算符使用 4 * 单独使用:放在操作数的前面和后面效果一样。(这种用法是我们比较常见的) 5 * 参与运算使用:放在操作数前面,先自增或者自减,然后再参与运算 6 * 放在操作数后面,先参与运算,再自增或者自减 7 * 8 * 作用:就是对变量进行自增1或者自减1。 9 */ 10 public class OperatorDemo2 { 11 public static void main(String[] args) { 12 //定义变量 13 int x = 3; 14 int y = 4; 15 16 //单独使用 17 //x++; 18 //y--; 19 ++x; 20 --y; 21 System.out.println("x:"+x+",y:"+y);//x:4,y:3 22 System.out.println("---------------------"); 23 24 //参与运算使用 25 int a = 3; 26 int b = 4; 27 28 int c = a++; 29 int d = b--; 30 System.out.println(a);//4 31 System.out.println(b);//3 32 System.out.println(c);//3 33 System.out.println(d);//4 34 35 } 36 }
1 package com.itheima.demo01; 2 3 public class OperatorTest { 4 public static void main(String[] args) { 5 int a = 10; 6 int b = 10; 7 int c = 10; 8 9 a = b++; //a=10 b=11 c=10 10 c = --a; //a=9 b=11 c=9 11 b = ++a; //a=10 b=10 c=9 12 a = c--; //a=9 b=10 c=8 13 14 System.out.println(a); 15 System.out.println(b); 16 System.out.println(c); 17 } 18 }
1 package com.itheima.demo01; 2 3 public class OperatorTest2 { 4 public static void main(String[] args) { 5 int x = 4; 6 int y = (x++)+(++x)+(x*10); 7 System.out.println(x);//6 8 System.out.println(y);//70 9 } 10 }
1 package com.itheima.demo01; 2 /* 3 * +的用法 4 * 1.加法 5 * 2.正号 6 * 3.字符串链接符 7 */ 8 public class OperatorDemo3 { 9 public static void main(String[] args) { 10 //定义变量 11 int x = 3; 12 int y = 4; 13 14 //加法 15 System.out.println(x+y); 16 //正号 17 System.out.println(+y); 18 19 System.out.println('a'); 20 System.out.println('a'+1); 21 22 //字符串连接 23 System.out.println("hello"+'a'+1); 24 System.out.println('a'+1+"hello"); 25 /* 26 * 7 27 4 28 a 29 98 30 helloa1 31 98hello 32 */ 33 } 34 }
赋值运算符
- 基本的赋值运算符号:=
- 扩展的赋值运算符号:+= -= *= /= %=
-
1 package com.itheima.demo01; 2 /* 3 * 赋值运算符 4 */ 5 public class OperatorDemo4 { 6 public static void main(String[] args) { 7 //定义变量 8 int x = 10; 9 System.out.println("------------"); 10 11 //定义一个变量 12 //+= 把左边和右边做加法,然后赋值给左边 13 int y = 10; 14 y+=20; 15 System.out.println(y); 16 } 17 }
1 package com.itheima.demo01; 2 /* 3 * 面试题 4 * short s = 1; s=s+1; 5 * short s =1;s+=1; 6 * 7 * 扩展的赋值运算符其实隐含了一个强制类型转换。等价于s = (s的数据类型)(s+1); 8 */ 9 public class OperatorTest3 { 10 public static void main(String[] args) { 11 //short s = 1; 12 //s=s+1; 13 //System.out.println(s); 14 15 short s = 1; 16 s+=1;//好像是s = s+1; 17 System.out.println(s); 18 } 19 }
比较运算符
1 package com.itheima.demo01; 2 /* 3 * 比较运算符 4 */ 5 public class OperatorDemo5 { 6 public static void main(String[] args) { 7 int x = 3; 8 int y = 4; 9 int z = 3; 10 11 System.out.println(x==y);//false 12 System.out.println(x==z);//true 13 System.out.println("-----------"); 14 System.out.println(x != y);//true 15 System.out.println(x>z);//false 16 System.out.println(x>=y);//false 17 System.out.println(x<y);//true 18 System.out.println(x<=y);//true 19 System.out.println("-----------"); 20 } 21 }
逻辑运算符
- 逻辑运算符用于连接布尔类型表达式,在Java中不可以写出3<x<6,应该写成x>3&x<6.
- "&"和"&&"的区别:单&时,左边无论真假,右边都进行运算;双&时,如果左边为真,右边参与运算,如果左边为假,那么右边就不参与运算;|和||的区别同理,双或时,左边为真,右边不参与运算。
- 异或(^)与或(|)的不同之处:当左右都为true时,结果为false。
-
1 package com.itheima.demo01; 2 /* 3 * 逻辑运算符 4 */ 5 public class OperatorDemo6 { 6 public static void main(String[] args) { 7 int a = 3; 8 int b = 4; 9 int c = 5; 10 11 //& 有false则false 12 System.out.println((a>b)&(a>c));//false & false = false 13 System.out.println((a>b)&(a<c));//false & true = false 14 System.out.println((a<b)&(a>c));//ture & false = false 15 System.out.println((a<b)&(a<c));//true & ture = true 16 17 //|逻辑或 有true则true 18 System.out.println((a>b)|(a>c));//false & false = false 19 System.out.println((a>b)|(a<c));//false & true = false 20 System.out.println((a<b)|(a>c));//ture & false = false 21 System.out.println((a<b)|(a<c));//true & ture = true 22 23 //^逻辑异或 相同则false 不同则true 24 System.out.println((a>b)^(a>c));//false & false = false 25 System.out.println((a>b)^(a<c));//false & true = false 26 System.out.println((a<b)^(a>c));//ture & false = false 27 System.out.println((a<b)^(a<c));//true & ture = true 28 29 //!逻辑非 非false则true 30 System.out.println(!(a>b));//!false = true 31 System.out.println(!(a<b));//!true = false 32 } 33 }
1 package com.itheima.demo01; 2 /* 3 * 逻辑运算符 4 */ 5 public class OperatorDemo7 { 6 public static void main(String[] args) { 7 int a = 3; 8 int b = 4; 9 int c = 5; 10 11 //&& 双与 12 System.out.println((a>b)&&(a>c));//false & false = false 13 System.out.println((a>b)&&(a<c));//false & true = false 14 System.out.println((a<b)&&(a>c));//ture & false = false 15 System.out.println((a<b)&&(a<c));//true & ture = true 16 System.out.println("----------------------------"); 17 18 } 19 }
位运算符
1 package com.itheima.demo01; 2 /* 3 * 位运算符 4 * & | ^ ~ 5 * >> << >>> 6 * 注意: 7 * 要做位运算,首先要把数据转换位二进制 8 */ 9 public class OperatorDemo8 { 10 public static void main(String[] args) { 11 int a = 3; 12 int b = 4; 13 14 System.out.println(3&4); 15 System.out.println(3|4); 16 System.out.println(3^4); 17 System.out.println(~3); 18 System.out.println("----------------------------"); 19 /* 20 * 0 21 7 22 7 23 -4 24 */ 25 } 26 }
1 package com.itheima.demo01; 2 /* 3 * ^ 的特点:一个数据对另一个数据位异或两次,该数本身不变 4 */ 5 public class OperatorDemo9 { 6 public static void main(String[] args) { 7 int a = 3; 8 int b = 4; 9 10 System.out.println(a^b^b);//3 11 System.out.println(a^b^a);//4 12 13 } 14 }
1 package com.itheima.demo01; 2 /* 3 * 面试题 4 * 请自己实现两个整数变量的交换 5 */ 6 public class OperatorTest4 { 7 public static void main(String[] args) { 8 int a = 10; 9 int b = 20; 10 11 //方式1:使用第三方变量 12 // int c = a; 13 // a = b; 14 // b = c; 15 // System.out.println("a:"+a+",b:"+b); 16 // System.out.println("------------");//a:20,b:10 17 18 //方式2:用位异或实现 19 //左边 aba 20 //右边 a^b 21 a = a^b; 22 b = a^b; 23 a = a^b; 24 25 System.out.println("a:"+a+",b:"+b);//a:20,b:10 26 } 27 }
三目运算符
1 package com.itheima.demo01; 2 /* 3 * 三目运算符 4 */ 5 public class OperatorDemo10 { 6 public static void main(String[] args) { 7 int x = 100; 8 int y = 200; 9 10 int z = ((x>y)?x:y); 11 System.out.println(z);//200 12 } 13 }
1 package com.itheima.demo01; 2 /* 3 * 练习: 4 * 获取两个整数中的最大值 5 * 获取三个整数中的最大值 6 * 比较两个整数是否相同 7 */ 8 public class OperatorTest5 { 9 public static void main(String[] args) { 10 //获取两个整数中的最大值 11 int x = 100; 12 int y = 200; 13 int max = (x>y?x:y); 14 System.out.println(max); 15 System.out.println("------"); 16 //获取三个整数中的最大值 17 int a = 10; 18 int b = 30; 19 int c = 20; 20 //分两步 21 //A.先比较ab的最大值 22 //B.拿ab的最大值再和c进行比较 23 int temp = ((a>b)?a:b); 24 int max1 =(temp>c?temp:c); 25 System.out.println(max1); 26 } 27 }
键盘录入数据:
- 我们目前在写入程序的时候,数据值都是固定的,但是实际开发中,数据值肯定是变化的,所以,我准备把数据改变为键盘录入,提高程序的灵活性。
- 如何实现键盘录入数据呢?导包Scanner 创建对象Scanner sc = new Scanner(System in);接收数据 int x = sc.nextInt();
1 package com.itheima.demo01; 2 3 import java.util.Scanner; 4 5 /* 6 * 键盘录入 7 */ 8 public class OperatorDemo11 { 9 public static void main(String[] args) { 10 //创建键盘录入数据对象 11 Scanner sc = new Scanner(System.in); 12 13 System.out.println("请输入一个数据:"); 14 int x = sc.nextInt(); 15 16 System.out.println("你输入的数据是:"+x); 17 } 18 }
111
流程控制语句
- 在一个程序执行的过程中,个条语句的执行顺序对程序对结果是有直接影响对,也就是说程序的流程对运行结果有直接的影响,所以,我们必须清楚每条语句的执行流程。而且,很多时候我们要通过控制语句的执行顺序来实现我们要完成的功能
- 流程控制语句分类
- 顺序结构
- 选择结构
- 循环结构
顺序结构
1 package com.itheima.demo02; 2 /* 3 * 顺序结构:从上往下,以此执行 4 */ 5 public class ShunXuJieGouDemo { 6 public static void main(String[] args) { 7 System.out.println("程序开始了"); 8 System.out.println("程序结束了"); 9 } 10 }
选择结构
package com.itheima.demo02; /* * 需求:根据用户的给定数值,现实该数值对应的星期。 */ public class IfTest { public static void main(String[] args) { //1.定义变量,记录数据 int week = 9; //2.通过判断结构语句对该变量进行判断 if (week == 1) // 3,根据不同的条件,通过输出语句显示不同的结果。 System.out.println(week + "对应的是星期一"); else if (week == 2) System.out.println(week + "对应的是星期二"); else if (week == 3) System.out.println(week + "对应的是星期三"); else if (week == 4) System.out.println(week + "对应的是星期四"); else if (week == 5) System.out.println(week + "对应的是星期五"); else if (week == 6) System.out.println(week + "对应的是星期六"); else if (week == 7) System.out.println(week + "对应的是星期日"); else System.out.println(week + "没有对应的星期"); } }