j1.数据类型
1.1float和long类型的赋值操作
public class Test1 {
public static void main(String[] args) {
/**
* 第一个赋值:
* 为什么这个情况下可以呢
* 因为默认的整数类型都是int
* 又因为int类型比float类型所占的字节空间小
* 所以是可以直接赋值的
*
* 第二个赋值:
* 不可以的原因是因为
* 小数默认类型都是double类型
* 又因为double类型字节长度比float大,
* 随意不能直接进行赋值
*
* 思考:
* long是8个字节
* float是4个字节
*
* 如果我把long类型的数据赋值给float
* 能成功吗?
* 记住:浮点型的字节存储和整形的字节存储是不一样的
* 所以浮点型的字节空间不能直接跟整形进行比较
*
* float的取值范围:-3.4E38----3.4028235E38
* long的取值范围:-9223372036854775808~9223372036854775807
*
* 通过对比发现,float类型他的取值范围要远远大于long类型
* 所以这样的赋值是没有问题的
*
*/
float a = 15;
float b = 15.0f;
float c = 250L;
}
}
1.2.char类型的赋值
- char类型打印字符和数字的区别
- 编码表的衍变
常用字符与ASCII代码对照表
为了便于查询,以下列出ASCII码表:第128~255号为扩展字符(不常用)
ASCII码 键盘 ASCII 码 键盘 ASCII 码 键盘 ASCII 码 键盘
27 ESC 32 SPACE 33 ! 34 "
35 # 36 $ 37 % 38 &
39 ' 40 ( 41 ) 42 *
43 + 44 ' 45 - 46 .
47 / 48 0 49 1 50 2
51 3 52 4 53 5 54 6
55 7 56 8 57 9 58 :
59 ; 60 < 61 = 62 >
63 ? 64 @ 65 A 66 B
67 C 68 D 69 E 70 F
71 G 72 H 73 I 74 J
75 K 76 L 77 M 78 N
79 O 80 P 81 Q 82 R
83 S 84 T 85 U 86 V
87 W 88 X 89 Y 90 Z
91 [ 92 \ 93 ] 94 ^
95 _ 96 ` 97 a 98 b
99 c 100 d 101 e 102 f
103 g 104 h 105 i 106 j
107 k 108 l 109 m 110 n
111 o 112 p 113 q 114 r
115 s 116 t 117 u 118 v
119 w 120 x 121 y 122 z
123 { 124 | 125 } 126 ~
1.3.强制类型转换之内存中到底做了什么
- 强制类型转换
- 强制类型转换的结果与取出
public class Test3 {
public static void main(String[] args) {
byte b1 = 3;
byte b2 = 4;
byte b3 = (byte) (b1 + b2);
//有没有问题?有问题如何解决?结果是多少呢?
byte by = (byte) 130;
System.out.println(b3);
System.out.println(by);//-126;
}
}
1.4 逻辑运算符
& AND 并且 true&true 结果为true
| or 或 true|false 结果为true
^ 异或 true^true 结果为false true^false 结果为true
! 非 !ture 结果为false
短路运算符
&& 只要前面结果为false就直接返回false不在往后面执行
|| 只要前面结果为true就直接返回true不在往后面执行
package bigdata;
public class text1 {
public static void main(String[] args){
int a=10;
int b=2;
System.out.println(a&b);
System.out.println(a|b);
System.out.println(a^b^b);
一个数字同时异或另外一个数字两次,得到的结果是他本身
}
1.5 三目运算符
定义:通过判断第一个关系表达式,然后选择执行后面的两个表达式
package test;
/*
三目运算符:通过判断第一个关系表达式,然后选择执行后面的两个表达式
怎么比较三个数中的最大值
*/
public class test7 {
public static void main(String[] args) {
int a=120;
int b=50;
int c=8;
System.out.println(a>b?(a>c?a:c):(b>c?b:c));
System.out.println(a>b&&a>c?a:(b>c?b:c));
int d=a>b?a:b;
System.out.println(d>c?d:c);
}
}
1.6 键盘录入:
//键盘录入
// sc.next(); 接收一行数据
// sc.Int() 接收一个int类型的值
// sc.nextBoolean() 接收一个布尔值
// sc.nextByte() 接收一个字节
// sc.nextLine() 接收一行数据 也就是一行字符串
public class test8 {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
System.out.println("请输入第一个数字");
int a=sc.nextInt();
System.out.println("请输入第二个数字");
int b=sc.nextInt();
System.out.println("请输入第三个数字");
int c=sc.nextInt();
System.out.println(a+b+c);
int d=(a>b&&a>c)?a:(b>c?b:c);
System.out.println("您输入的三个数中最大值为"+d);
}
}
流程控制语句
–顺序结构
代码执行就是顺序
从上到下,从左到右
–选择结构
判断语句if
if(表达式){
执行语句
}
在if里面 这个括号里面的表达式是一个boolean类型的.
想要使用boolean类型,第一种,直接给他传一个boolean类型.
package com._51doit.day03;
import java.util.Scanner;
public class practise3 {
public static void main(String[] args) {
// int a=6;
// int b=8;
// int max=b;
// if(a>b){
// max=a;
//
// }
// System.out.println("输出的最大值为"+max);
Scanner sc=new Scanner(System.in);
// int a=1;
// int i=6;
System.out.println("请录入学生A的成绩");
int A=sc.nextInt();
System.out.println("请录入学生B的成绩");
int B=sc.nextInt();
System.out.println("请录入学生C的成绩");
int C=
if(A>B){
System.out.println("A的成绩高");
}else{
System.out.println("B的成绩高");
}
}
}
package com._51doit.day03;
import java.util.Scanner;
public class practise5 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入第一个数字");
System.out.println("请输入第二个数字");
System.out.println("请输入第三个数字");
int a= sc.nextInt();
int b= sc.nextInt();
int c= sc.nextInt();
if(a>b&&a>c){
System.out.println(a);
}else if (b>c) {
System.out.println(b);
}else {
System.out.println(c);
}
}
}
switch(表达式short,byte,int,char,jdk1.7的有string)
case value1:value值只能是常量不能是变量
执行语句
break;
case value2:
执行语句
break;
package com._51doit.day04;
import java.util.Scanner;
public class practise2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个数字");
int i = sc.nextInt();
switch (i) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期日");
break;
default:
System.out.println("请输入合法数字");
break;
}
}
}
–循环结构 for循环格式
for(初始化语句;判断语句;控制语句){
循环语句
}
初始化语句:干的事情,就是做一个循环的初始化值,这个值可以随这循环的变化而变化 初始化的循环从第几次开始
判断语句 返回是boolean值如果返回true那么就执行循环语句 如果是false就退出
控制语句 初始化语句中的值会在控制语句进行的自增或者自减其实就是控制循环次数的
package com._51doit.day04;
//import java.util.Scanner;
//import org.omg.Messaging.SyncScopeHelper;
public class practise7 {
public static void main(String[] args) {
// Scanner sc=new Scanner(System.in);
// int a = 0;
// int b=0;
// int c=0;
// for (int i= -5; i <5; i++) {
// if (i<0) {
// a=i+1;
// }if (i==0) {
// b=i+1;
// }if (i>0) {
// c=i+1;
// }
// System.out.println(a);
// System.out.println(b);
// System.out.println(c);
//}
for (int i = 1; i <2001; i++) {
// if (i%5==0) {
// System.out.println(i);
// }
// System.out.println("-------------");
// if (i%2==0&&i%3==0 ) {
// System.out.println(i);
// }
// if ((i%4==0)&&(i%100!=0)||(i%400==0)) {
// System.out.println(i);
//}
}
}
}
执行顺序:
–初始化变量值
–走到判断语句,对初始化变量进行判断
–如果判断语句返回为true,那么执行循环体语句
–执行完循环体语句以后,执行控制语句
–控制语句执行完毕,回到步骤2一次执行
–直到判断语句返回false为止
–如果判断语句是一个无限循环
for(中间什么也没有或者加true为无限循环)
while循环格式
初始化语句
while(判断语句){
循环体语句;
控制语句;}
package bigdata;
//打印1--100的奇数个数;
public class text1{
public static void main(String[] args) {
int i=1;
int sum=0;
while (i<=100) {
sum++;
i+=2;
}
System.out.println(sum);
}
}
package day;
//do ...while循环的使用
public class text1 {
public static void main(String[] args) {
int a=0;
int b=0;
do{
b++;
a+=3;
if(b%6==0){
a-=5;
}
}while(a<100);
System.out.println(b);
}
}
for循环中,他的初始化变量,在使用完之后,就直接被销毁,作用域仅局限与for循环内部使用
在while循环中,初始化循环的结束而消失的,而会一直存在,知道该方法或该类运行完毕
** 循环的选择**
在确定循环次数到底是多少次的情况下,我们一般选择while循环
确定了循环次数的情况下,尽量选择for循环
双for循环
外层循环控制行数
内层循环控制列数
package day;
//打印倒三角
public class text9 {
public static void main(String[] args) {
for (int i = 6; i >0; i--) {
for (int j = 0; j <i; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
结束流程的三个关键字
break:switch循环语句中使用 (可以跳出当前单层循环 继续执行循环外的代码)[break cannot be used outside of a loop a switch]
continue:循环语句中使用,单独使用无意(跳过本次循环,执行下次循环)[continue cannot be used outside of a loop]
return:结束循环 或者给方法返回一个值(结束所有运行代码)