一:进制转换:
1. 十进制转二进制
连除到取余例十进制18转化二进制
2.二进制转化为十进制
按权求和
1 0 0 1 0 .......(二进制)
2^4*1 + 2^3*0 + 2^2*0 + 2^1*1+ 2^0*0 =18(十进制)
例:
十进制转化至 二进制 八进制 十六进制
分别调用方法 toBinaryString toOctalString toHexString
public class Demo01 {
public static void main(String[] args) {
// 10机制转2进制 返回的是字符串类型
String str1 = Integer.toBinaryString(18);
System.out.println(str1);
// 10机制转8进制 返回的是字符串类型
String str2 = Integer.toOctalString(31);
System.out.println(str2);
// 10机制转16进制 返回的是字符串类型
String str3 = Integer.toHexString(12);
System.out.println(str3);
}
}
二 数据类型及相互转化:
分类:数据类型(用来存储数据 系统会在内存里开辟一块空间用来存储数据)
1.基本数据类型:
- 整数型(byte short int long)
byte 一个字节 存储的数据占一个字节 8个二进制位表示 0000 0000 可以表示2^8个数字 取值范围是(-128 --127)
short 占2个字节 短整型
int 整形 占4个字节(最常用)
long 长整形 占8个自己
- 小数型(float double)
float 占4个字节
double 占8个字节
- 字符型
- 字符串型
例:
public static void main(String[] args) {
//常量:在整个程序运行中不能 修改的量;
System.out.println(10);
//声明一个变量---存储数据
//数据类型+变量名 = 初值;
byte b = 10;
System.out.println(b);
short s = 10;
int a = 10;//定义一个整形变量初值为10;
long m = 10;
/*
* double 是存储小数的但是赋值一个小数这时系统会进行隐式转化
* 将小的类型转化成大的类型
*/
double d = 10;
System.out.println(d);
//强制类型转换 会丢失数据精度
//声明一个小数系统默认的是double类型.
int number = (int)3.14;
System.out.println(number);
//声明float类型的小数,需要使用标识符f标识
float f =10.0f;
System.out.println(f);
/*
* 特殊类型 字符类型
* 特点:可以和整形相互转换
* 声明字符型使用单引号
*/
char ch = 'A';
System.out.println((int)ch);//强转完 打印该字符 在AscII表中对应的值
char ch1 = 97;
System.out.println(ch1);
// 字符串类型 声明字符串使用双引号 字符串中的+号 相当于连接两个字符串(拼接)
String str1 = "八戒";
String str2 = "你来了";
System.out.println(str1 + str2);//八戒你来了
int num1 = 10;
System.out.println("num1 =" + num1);//num1=10
int num2 = 12;
System.out.println(num1 + num2);//22
//字符串和数字用+号连接时 相当于做字符串的拼接,和字符串相加得到的一定是字符串
System.out.println(str1 + num1 + num2);//八戒1012
}
2.引用数据类型:{ 数组 类 接口}
三 运算符
- 算术运算符 + - * / % ++ --
- 关系运算符 > < >= <= !=
- 逻辑运算符 && || !
例:
public static void main(String[] args) {
//取模运算(一般用的最多是对2取余)判断是否为偶数;
int n1 = 5 % 10;
System.out.println(n1);
//除法
//可以借助API文档查出报出的错误
double n2 = 10 / 5;
System.out.println("n2=" + n2);
//自增运算(++) 和 自减运算(--)
//++在前 先自增再进行运算 ++在后 先参与计算再自增
int n3 = 10;
// n3++;//
++n3; //相当于n3 = n3+1;
System.out.println("n3=" + n3);//11
int n4 = 10;
int n5 = n4 + ++n4;//10+11
System.out.println("n4="+n4);//11
System.out.println("n5="+n5);//21
//声明一个boolean 类型的变量 只有true 或false
//状态 和 判断 时使用.
boolean b = true;
System.out.println(!b);
int num1 = 10;
int num2 = 15;
boolean result1 = num1 != num2;
System.out.println(result1);
//判断两个字符串是否相等
String str1 = "嗯嗯";
String str2 = "啊啊";
boolean result2 = str1.equals(str2);
System.out.println(result2);//false
//逻辑运算
//逻辑与/或的短路现象
int num3 = 5;
int num4 = 6;
int num5 = 7;
//逻辑与短路现象:一假则假 如果条件一已经不成立那么系统不会执行后面的语句.
boolean result3 = (num3 > num4)&&(num3++ > num5);
System.out.println("result3 =" + result3);//false
System.out.println(num3);//5
//逻辑或的短路现象:一真则真 如果条件一已经成立那么系统不会执行后面的语句.
boolean result4 = (num3 < num4)||(num3++ < num5);
System.out.println("result4 =" + result4);//true
System.out.println(num3);//5
}
四 流程控制
- 顺序结构
- 分支结构
- 循环结构 (for while do while )
2.1 if
if有三种写法
if(){}
if(){}else{}
if(){}else if(){}else{}
2.2 switch
if 用法:
要求:
如果晴天,去爬山,如果下雨,去逛街,再次接收用户的输入*小雨的话,带上伞, * 暴雨的话,穿上雨衣 键盘输入模拟天气
public static void main(String[] args) {
System.out.println("输入模拟天气");
Scanner scanner = new Scanner(System.in);
String tq = scanner.nextLine();
if (tq.equals("晴天")) {
System.out.println(tq + "去爬山");
}else if(tq.equals("下雨")) {
System.out.println(tq + "去逛街");
System.out.println("输入雨天天气");
//直接使用之前创建的 Scanner 对象
String tq1 = scanner.nextLine();
if (tq1.equals("小雨")) {
System.out.println(tq1 + "带上伞");
}else if (tq1.equals("暴雨")) {
System.out.println(tq1 + "穿上雨衣");
}
}else {
System.out.println("阴天有鬼,不要出门");
}
switch 用法示例:
switch (key) { key:要被匹配的值
case value: value(匹配的值1)
执行语句1
break;
case value: value(匹配的值2)
执行语句2
break;
````` 可以匹配多个值.
default:
如果前面都没匹配上 就执行default
break;
}
要求: 输入一个数 1--打印春天 2--打印夏天 3--打印秋天 4--打印冬天
public static void main(String[] args) {
System.out.println("输入一个数");
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();
int num = Integer.parseInt(str);
switch (num) {
case 1:
System.out.println("春天");
break; //跳出switch 语句
case 2:
System.out.println("夏天");
break;
case 3:
System.out.println("秋天");
break;
case 4:
System.out.println("冬天");
break;
default://不管default在什么位置最终都没匹配到case条件就一定会执行default中的语句.
System.out.println("嘿嘿嘿");
break;
}
}
五 三目运算
(判断条件)?值1:值2;
如果满足判断条件 返回值1 否则 返回值2
例:
public static void main(String[] args) {
//求两个数的最大值
int num1 = 10;
int num2 = 15;
int max = 0;//定义一个变量接收三目返回的值
max = (num1>num2)?num1:num2;
System.out.println(max);
//求两个数的最大值
int num3 = 20;
int max2 = max>num3?max:num3;
System.out.println("num1 num2 num3 中的最大值" + max2);
}
六 while 循环的使用
while (循环条件){循环体}
满足循环条件再运行{}里的语句.
例:打印1-10
public static void main(String[] args) {
int i =10;
while(i>=1) {
System.out.println(i--);
}
//打印1+2+3+.....+10
int n = 1;//循环增量
int sum=0;//定义一个变量保存和
while (n<=10) {
//计算累加的和
sum +=n;
n++;
}
System.out.println(sum);
}
while循环的循环条件要先定义循环变量 .