Java语言基础
1. 类型转化
自动提升 手动下降 以上规则适用于Java中所有的类型转换
1.1 自动转换
两种类型相互兼容。 目标类型大于源类型。
public class Test1{public static void main(String [] args){// 类型转换// 自动类型转换// 两种类型要兼容 目标类型(等号左边的)要大于(取值范围大于)源类型(等号右边的)// 自动提升byte b1 = 20;short s1 = b1;System.out.println(s1);short s2 = 220;int i1 = s2;System.out.println(i1);int i2 = 5566;long l1 = i2;System.out.println(l1);long l2 = 2233;float f1 = l2;System.out.println(f1);float f2 = 33F;double d1 = f2;System.out.println(d1);}}
1.2 强制转换
两种类型相互兼容。 目标类型小于原类型。
public class Test2{public static void main(String [] args){// 强制类型转换// 两种类型要兼容 目标类型(等号左边)小于(取值范围小于)源类型(等号右边)short s1 = 120;byte b1 = (byte)s1; // 小括号中的内容表示 要强转为的类型System.out.println(b1);int i1 = 2233;short s2 = (short)i1;System.out.println(s2);long l1 = 556;int i2 = (int)l1;System.out.println(i2);double d1 = 20.5;float f1 = (float)d1;System.out.println(f1);// 将浮点类型的数值强制转换为整数类型 只保留整数部分float f2 = 3.14F;long l2 = (long)f2;System.out.println(l2);double d2 = 220.5;int i3 = (int)d2;System.out.println(i3);}}
特殊情况:将超过目标类型取值范围的数值 强制转换/存放
public class Test3{public static void main(String [] args){// 强制类型转换// 将超过目标类型取值范围的数值 强制转换/存放int s1 = 128;byte b1 = (byte)s1;System.out.println(b1);short s2 = 257;byte b2 = (byte)s2;System.out.println(b2);short s3 = 129;byte b3 = (byte)s3;System.out.println(b3);// 原码 反码 补码// 正数的原码 反码 补码都一样 都是其本身// 负数的反码是符号位保持不变 其余各位取反 1011 0011 --》 1100 1100// 补码是在反码的基础上 + 1 1100 1100 --》 1100 1101int ch1 = 67;char numa = (char)ch1;System.out.println(numa);}}
2. 运算符
2.1 算数运算符

public class Test4{public static void main(String [] args){// 算数运算符// + - * / %int a = 20;int b = 5;System.out.println("a与b的和是:" +( a + b));System.out.println("a减去b是:" + (a - b));System.out.println("a * b的结果是:" + a * b);System.out.println("a/ b的结果是:" + a / b);System.out.println("a % b的结果是:" + a % b);}}
++ 表示自增1 ++单独作为一条语句书写 在前在后没有任何区别 不是作为一条语句单独执行 在前表示 先 再执行其他 在后 表示先执行其他的 再++ — 表示自减1 —不是作为一条语句单独执行 —在前 表示先— 再执行其他 —在后 表示先执行其他的 再—
public class Test5{public static void main(String [] args){// ++ 表示自增1 ++单独作为一条语句书写 在前在后没有任何区别// 不是作为一条语句单独执行 ++在前表示 先++ 再执行其他// ++在后 表示先执行其他的 再++// -- 表示自减1// --不是作为一条语句单独执行 --在前 表示先-- 再执行其他// --在后 表示先执行其他的 再--int a = 10;a++;System.out.println(a); // 11++a;System.out.println(a);int b = 10;int c = b++;System.out.println(c);System.out.println(b);int e = 5;int f = ++e;System.out.println(e);System.out.println(f);}}
2.2 赋值运算符

public class Test6{public static void main(String [] args){// 赋值运算符int a = 20;a += 3; // 等价于 a = a + 3;System.out.println(a);a -= 10; // 等价于 a = a - 10;System.out.println(a);a *= 2; // 等价于 a = a * 2;System.out.println(a);a /= 5; // 等价于 a = a / 2;System.out.println(a); // 因为两个操作数都是int类型 所以不能保留小数a %= 2; // 等价于 a = a % 2;System.out.println(a);}}
2.3 关系运算符

public class Test7{public static void main(String [] args){// 关系运算符 两个操作数或者表达式关系是否成立// 最终的结果为boolean类型 要么为true 要么为falseint a = 20;int b = 20;System.out.println(a > b);System.out.println(a < b);System.out.println(a >= b);System.out.println(a <= b);System.out.println(a == b);System.out.println(a != b);}}
2.4 逻辑运算符

&& 短路与 表示要求两个或者多个表达式同时成立 则结果为真,如果第一个表达式不成立 则后续的表达式不再执行
& 与 表示要求两个或者多个表达式同时成立 则结果为真 没有短路的效果
不管第一个表达式结果如何 都将执行完所有的表达式
|| 短路或 表示要求两个或者多个表达式有一个成立 则结果为真,如果第一个表达式成立 那么后续的不再执行
| 或 表示要求两个或者多个表达式有一个成立 则结果为真
| 没有短路的效果 不管第一个表达式结果如何 都将执行完所有的表达式
public class Test8{public static void main(String [] args){// 逻辑运算符// && 短路与 表示要求两个或者多个表达式同时成立 则结果为真// 短路与 如果第一个表达式不成立 则后续的表达式不再执行了// & 与 表示要求两个或者多个表达式同时成立 则结果为真 没有短路的效果// 不管第一个表达式结果如何 都将执行完所有的表达式// || 短路或 表示要求两个或者多个表达式有一个成立 则结果为真// 短路或 如果第一个表达式成立 那么后续的不再执行// | 或 表示要求两个或者多个表达式有一个成立 则结果为真// | 没有短路的效果 不管第一个表达式结果如何 都将执行完所有的表达式int a = 20;int b = 25;int c = 21;System.out.println((a < b) && (b > c) );System.out.println((a < b) && (b < c) );System.out.println("=====================================");System.out.println((a < b) & (b > c) );System.out.println((a < b) & (b < c) );System.out.println("=====================================");System.out.println((a < b) || (b > c) );System.out.println((a < b) || (b < c) );System.out.println("=====================================");System.out.println((a < b) | (b > c) );System.out.println((a < b) | (b < c) );}}
public class Test9{public static void main(String [] args){int x=8;int y=9;System.out.println((++x==y)&&(++x!=y));System.out.println(x);System.out.println("-------------------------------------------1");int x1=8;int y1=9;System.out.println((++x1==y1)||(++x1!=y1));System.out.println(x1);System.out.println("-------------------------------------------2");int x2=8;int y2=9;System.out.println((++x2==y2)|(++x2!=y2));System.out.println(x2);System.out.println("-------------------------------------------3");int a=8;int b=9;System.out.println( (++a!=b)&(++a==b));System.out.println(a);}}// ctrl + 回车
public class Test10{public static void main(String [] args){// ! 表示取反 非真即假 非假即真System.out.println(!true);System.out.println(!false);}}
2.5 三元运算符

public class Test11{public static void main(String [] args){// 三目(三元)运算符// 布尔表达式 ? 结果1 : 结果2// 如果布尔表达式条件成立 则执行结果1 否则执行结果2int age = 18;System.out.println(age >= 18 ? "成年了" : "未成年");int numa = 20;int numb = numa > 20 ? 25 : 300;System.out.println(numb);}}
3. Scanner接收输入信息
程序运行中,可在控制台(终端)手动录入数据,再让程序继续运行。
使用顺序:
1.导入 java.util.Scanner。
2.声明 Scanner 类型的变量。
3.使用Scanner类中对应的方法(区分类型):
.nextInt(); //获得整数<br /> .nextDouble(); //获得小数<br /> .next(); //获得字符串<br /> .next().charAt(0);//获得单个字符(了解)注意:如果输入了不匹配的数据,则会产生java.util.InputMismatchException
import java.util.Scanner;
public class Test12{
public static void main(String [] args){
// 编写程序获得用户输入的信息
// int a = 20;
// 定义一个扫描器 用于接收用户输入的信息 取名为 input
Scanner input = new Scanner(System.in);
// System.out.println("请输入一段文字");
// String context = input.nextLine();
// System.out.println(context);
// 提示用户输入
System.out.println("请输入您的姓名");
// 接收内容并且存储到name变量中
String name = input.next();
// 将用户输入的名字打印
System.out.println("您输入的名字是:" + name);
// 提示用户输入年龄
System.out.println("请输入您的年龄");
// 接收用户输入的年龄 并且赋值给age变量
int age = input.nextInt();
// 将用户输入的年龄打印
System.out.println("您输入的年龄是:" + age);
// 提示用户输入身高
System.out.println("请输入您的身高");
// 接收用户输入的身高 并且赋值给height变量
double height = input.nextDouble();
// 将用户输入的信息 打印
System.out.println("您输入的身高是:" + height);
System.out.println("-----------------------------");
}
}
