目录
一、四种进制
1.十进制
2.二进制
3.八进制
4.十六进制
二、正负
1.表示方式
2.原码、反码与补码
三、JAVA使用的字符集
1.转义字符
四、基本数据类型转换
1.自动类型转换(隐式类型转换)
①把存储范围小的量赋给存储范围大的变量
②当存储范围小的数据类型与存储范围大的数据类型混合运算,会按照范围大的计算
③当byte、short、char数据类型进行算术运算,按照int处理
2.强制类型转换
①把存储范围大的值赋给存储范围小的值,可能会损失精度或溢出
②boolean类型不参与转换
③当某个值想要提升数据类型时,也可以使用强制类型转换
3.特殊的数据类型转换
①任意数据类型与String类型数据进行“+”运算时
②String类型不能通过强制类型转换转化为其他类型
五、运算符
1.算术运算符
2.赋值运算符 =
3.比较运算符
4.逻辑运算符
5.位运算符(二进制)
6.三元运算符
六、流程控制
1.顺序结构
使用scanner对象从控制台读取数据
import java.util.Scanner;
2.分支结构
①if语句
②if…else语句
③if…else if…else语句
④if…else嵌套
⑤switch…case语句
3.循环结构
①for循环
1~100偶数求和
②whil循环
③do…while循环
一、四种进制 1.十进制
正常表示
System.out.println(10);2.二进制
0b或0B开头
System.out.println(0b10);3.八进制
0开头
System.out.println(010);4.十六进制
0x或0X开头
System.out.println(0x10);二、正负
1byte=8bit
1.表示方式用最高位数字表示正负,0为正数,1为负数
负数:1000 0001 -1 1000 0000 -128
正数:0000 0000 0 0111 1111 127
2.原码、反码与补码正数的原码,反码,补码相同
负数:
原码:转化为二进制,最高位取1
反码:除最高位,其余位取反
补码:反码+1
三、JAVA使用的字符集Unicode字符集
1.转义字符将取值范围小的类型自动提升为取值范围大的数据类型
取值范围从小到大
byte 格式:数据类型 变量名 = (数据类型)被强制转换的数据 输出结果一定是String类型(其他类型在前先按其他类型运算方式计算) 可以通过""+……将其他类型的数据转化为String类型 除数不能为0 如果不能整除,会自动舍弃小数部分 ++在前,先运算后取值 a=2;b=++a a是3,b是3 ++在后先取值后运算 a=2;b=a++ a是3,b是2 --在前,先运算后取值 a=2;b=--a a是1,b是1 --在后,先取值后运算 a=2;b=a-- a是1,b是2 运算方向:从右到左 例:n += (n++) + (++n) 借助字节码文件的分析:javap -c Give.class 除+=还有-=、*=、/=、%= 最终返回布尔值true/false 是否是类的对象 前面即使判断出结果,后面还会执行 有短路效果 只要前面的表达式为false,整体就是false,后面不执行 前面即使判断出结果,后面还会执行 带短路效果 只要前面的表达式为true,整体就是true,后面不执行 相同为false 不同为true 当最高位是0,右移后,空缺位补0 当最高位是1,右移后,空缺位补1 格式:(条件表达式)?表达式1:表达式2; true,结果为表达式1 false,结果为表达式2 导入scanner类 对于布尔值 switch可选值: byte、short、int、char、枚举、String case: 子句中指定值必须是常量且互不相同 default: 当case都不满足,则执行default分支 位置灵活 可写可不写 break: 跳出循环 判断条件必须是布尔类型,当结果为false时循环结束 for(声明变量;循环过程中判断条件;变量循环累加){ 表达式; }; 打印十次Hello while(判断条件){ 循环体; }; 表达式; 例:世界最高山峰是珠穆朗玛峰,它的高度是8844.43米,假如我有一张足够大的纸,它的厚度是0.1毫米。请问,我折叠多少次,可以折成珠穆朗玛峰的高度? do{ 循环体 }while(判断条件); 表达式; 例:从键盘读入个数不确定的整数,并判断读入的正数和负数的个数,输入为0时结束程序。 欢迎分享,转载请注明来源:内存溢出public class Translation{
public static void main(String [] args){
double d = 10;
byte b = 130;//损坏 byte∈[-128,127]
long num = 12345;
long bigNum = 12345678912L;//右边超过int范围要加L
}
}
②当存储范围小的数据类型与存储范围大的数据类型混合运算,会按照范围大的计算
③当byte、short、char数据类型进行算术运算,按照int处理
2.强制类型转换
public class Date{
public static void main{
int i = (int)3.14;
double d = 1.2;
int num = (int)d;//损失精度
}
}
②boolean类型不参与转换
③当某个值想要提升数据类型时,也可以使用强制类型转换
public class Date{
public static void main{
int i = 1;
int d = 2;
double shang = (double)i/j;//无风险
}
}
3.特殊的数据类型转换
①任意数据类型与String类型数据进行“+”运算时
public class Translation{
public static void main(String [] args){
System.out.println("" + 1 + 2);//12
System.out.println(5 + 10 + "abc");//15abc
}
}
+-*/%++-- 正/加/字符串连接负/减乘除(取整)取余(取模)自增自减
2.赋值运算符 =
public class Give{
public static void main(String[] args){
int n = 10;
n += (n++) + (++n);
// 实际运行的结果是32
System.out.println(n);
}
}
public class Give {
public static void main(String[] args){
//short s = 2;
//①,错误:不兼容的类型,从int转换为short可能会有损失
//原因:byte、short、char做数学运算时就自动转换为int类型
//s+2是int类型
//s = s + 2;
//②,编译通过,说明+=有自动的类型转换
int n=10;
n += (n++) + (++n);
System.out.println(n);
}
}
==!=<><=>=instanceof 是否等于是否不等于是否小于是否大于是否小于等于是否大于等于
public class Compare{
public static void main(String[] args){
System.out.println(5 == 6);
System.out.println("Hello" instanceof String);
boolean b1 = false;
if(b1 == true){
System.out.println("结果是真的");
}else{
System.out.println("结果为假");
}
}
}
4.逻辑运算符
&&&|||!^ 逻辑与短路与逻辑或短路或取反异或
5.位运算符(二进制)
符号含义规则例子 <<左移空位补0,被移除的高位丢弃,空缺位补03<<2 12 >>右移 >>>无符号右移被移位二进制最高位无论是0或者是1,空缺位都用0补3>>>1 1 &按位与二进制位进行&运算,只有1&1时结果是1,否则是06&3 2 |按位或二进制位进行 | 运算,只有0 | 0时结果是0,否则是16|3 7 ^按位异或二进制位相同是0,二进制位不同是16^3 5 ~按补码取反~6 -7
6.三元运算符
public class Give{
public static void main(String[] args){
int i = 30;
int j = 20;
String result = (i>j)?"i比j大":"i比j小";
}
}
六、流程控制
1.顺序结构
使用scanner对象从控制台读取数据
// 导入Scanner类
import java.util.Scanner;
public class Demo16Scanner {
public static void main(String[] args){
// 1.创建Scanner对象
Scanner scanner = new Scanner(System.in);
// 2.读取int类型数据
System.out.print("请输入一个整数:");
// 调用scanner对象的nextInt()方法
int age = scanner.nextInt();
System.out.println("age="+age);
// 3.读取boolean类型数据
System.out.print("请输入一个布尔值:");
boolean flag = scanner.nextBoolean();
System.out.println("flag="+flag);
// 4.读取字符串
System.out.print("请输入一个字符串:");
// next()方法会因为空格而终止读取
String strValue = scanner.next();
System.out.println("strValue="+strValue);
// 建议使用:
// nextLine()方法不会因为空格而终止读取
strValue = scanner.nextLine();
System.out.println("strValue="+strValue);
}
}
2.分支结构
①if语句
// 创建Scanner对象
Scanner scanner = new Scanner(System.in);
public class If{
public static void main(String[] args){
System.out.print("请输入i:");
int i = scanner.nextInt();
System.out.print("请输入j:");
int j = scanner.nextInt();
// 测试使用单独的if语句
// 当if(判断条件)为true时执行{}中的语句
if (i > j){
System.out.println("i 比 j 大");
}
}
如果if语句块中只有一条语句,可以省略{}
import java.util.Scanner;
public class If{
public static void main(String[] args){
//创建scanner对象
Scanner scanner = new Scanner(System.in);
System.out.print("请输入i:");
int i = scanner.nextInt();
System.out.print("请输入j:");
int j = scanner.nextInt();
//省略{}
if (i < j)
System.out.println("i 比 j 小");
System.out.println("后续操作");
}
}
import java.util.Scanner;
public class If{
public static void main(String[] args){
// 读取一个布尔值
System.out.print("请输入flag:");
boolean flag = scanner.nextBoolean();
// 没有必要写flag == true
if (flag) {
System.out.println("flag是真的");
}
}
}
②if…else语句
③if…else if…else语句
④if…else嵌套
import java.util.Scanner;
public class If{
public static void main(String[] args){
//创建scanner对象
Scanner scanner = new Scanner(System.in);
System.out.print("请输入i:");
int i = scanner.nextInt();
System.out.print("请输入j:");
int j = scanner.nextInt();
if (i > j){ // 执行条件判断①
System.out.println("i 比 j 大"); // ①为true时执行
} else if (i < j) { // ①为false继续执行下一个条件判断②
System.out.println("i 比 j 小"); // ②为true时执行
} else {
System.out.println("i 和 j 相等"); // ②为false时执行
// 嵌套在其他if...else结构内的if
if (m > n){
System.out.println("m 比 n 大");
}
}
}
}
⑤switch…case语句
import java.util.Scanner;
public class Demo18SwitchCase {
public static void main(String[] args){
// 创建Scanner对象
Scanner scanner = new Scanner(System.in);
System.out.print("请输入季节:");
String season = scanner.nextLine();
// 使用season变量的值和后面的case依次进行比较
// 遇到一个满足条件的case,那么后面的都会被执行,包括default分支
// 除非在某个case中使用了break关键字,停止了case的执行。
switch(season){
case "spring":
System.out.println("我喜欢春天");
break ;
case "summer":
System.out.println("我喜欢夏天");
break ;
case "autumn":
System.out.println("我喜欢秋天");
break ;
case "winter":
System.out.println("我喜欢冬天");
break ;
// 当前面每一个case都不匹配时执行default分支(默认分支)
default:
System.out.println("我喜欢梅雨季节");
}
}
}
3.循环结构
①for循环
public class For{
public static void main(String[] args){
for(int i = 0;i < 10;i++){
System.out.println("Hello");
};
}
}
1~100偶数求和
public class Count{
public static void main(String[] args){
int sum = 0;
for(int i = 0;i < 100;i++){
if(i % 2 == 0){
sum += i;
};
};
System.out.println(sum);
}
}
②whil循环
public class Mount{
public static void main(String[] args){
double h1 = 88444300;
double h2 = 1.0;
//声明一个变量用于统计折叠次数
int count = 0;
//声明一个变量用来保存折叠后的厚度
double thick = h2;
while(thick <= h1){
//折一次厚度翻倍
thick *= 2;
//折叠次数加一
count++;
}
System.out.println("最终纸的厚度为" + thick);
System.out.println("最终折叠次数为" + count);
}
}
③do…while循环
import java.util.Scanner;
public class Number{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
//输入整数
System.out.print("请用户输入整数:");
int a = scanner.nextInt();
//声明一个变量来保存正数的个数
int count1 = 0;
//声明一个变量来保存负数的个数
int count2 = 0;
do{
if(a > 0){
count1++;
}
if(a < 0){
count2++;
}
System.out.println("正数的个数是" + count1);
System.out.println("负数的个数是" + count2);
System.out.print("请用户输入整数:");
a = scanner.nextInt();
}while(a != 0);
}
}
评论列表(0条)