Java语言基础

1.变量

1.1定义方式

先声明,再赋值:
数据类型 变量名;
变量名 = 值;
声明并赋值:
数据类型 变量名 = 值;

1.2整型

面试题:byte的取值范围和原理
取值范围:-128~127
因为一个byte占8位,每一位可以存储一个0或者1,计算机以首位(最高位)为符号位,0表示正数,1表示负数,所以byte最大的数值为0111 1111转换为十进制为127,最小值为1000 0000转换为十进制为-128

public class Test2{
	public static void main(String [] args){
		// 整型数据类型 byte short int long
		// byte 取值范围 -128 ~ 127
		byte b1 = 120;
		System.out.println(b1);
		// byte b2 = 128; 超过范围不能存储 报错 
		// System.out.println(b2);
		
		// short 取值范围 -32768 ~ 32767 
		short s1 = 200;
		System.out.println(s1);
		// short s2 = 50000; 超过范围不能存储 报错
		// System.out.println(s2);
		
		// short s3 = -40000;
		// System.out.println(s3);
		
		// int 取值范围 -2147483648 ~ 2147483647
		System.out.println(Integer.MAX_VALUE);
		System.out.println(Integer.MIN_VALUE);
		
		int i1 = 2000;
		System.out.println(i1);
		
		int i2 = -20000;
		System.out.println(i2);
		
		// int i3 = 21474836470; 过大的整数 报错
		// System.out.println(i3);		
		
		// long 取值范围  -9223372036854775808 ~ 9223372036854775807
		System.out.println(Long.MAX_VALUE);
		System.out.println(Long.MIN_VALUE);
		
		long l1 = 56897L;
		long l2 = -784512L;
		System.out.println(l1);
		System.out.println(l2);
		// 给long类型赋值 如果取值范围超过了int的取值范围必须加L  大小写都可以 要求大写
		long l3 = 21474836470l;
		System.out.println(l3);
		
	}
}

1.3浮点类型

public class Test3{
	public static void main(String [] args){
		// float 取值范围  负数-3.4E+38 ~ -1.4E-45  正数1.4E-45 ~ 3.4E+38
		// 在给float类型赋值 必须在末尾加上F 大小写都可以 推荐大写
		float f1 = 3.14F;
		System.out.println(f1);
		float f2 = 20F;
		System.out.println(f2);
		
		float f3 = -340000000000000000000000000000000000000F;
		System.out.println(f3);
		
		float f4 = -0.0000000000000000000000000000000000000000000014F;
		System.out.println(f4);
		
		float f5 = 0.0000000000000000000000000000000000000000000014F;
		float f6 = 340000000000000000000000000000000000000F;
		System.out.println(f5);
		System.out.println(f6);
		
		// double类型取值范围 负数 -1.7E+308 ~ -4.9E-324   正数 4.9E-324 ~ 1.7E+308

		double d1 = 2.5;
		System.out.println(d1);
		double d2 = 20;
		System.out.println(d2);
		
	}
}

1.4布尔类型

public class Test4{
	public static void main(String [] args){
		// boolean 布尔类型 取值只有 真true/假 false
		int a = 20;
		int b = 30;
		System.out.println(a > b);
		System.out.println(a < b);
		
		boolean bl1 = true;
		boolean bl2 = false;
		System.out.println(bl1);
		System.out.println(bl2);
	}
}

1.5字符类型

char类型可以使用三种赋值方式
字符赋值:char c1 = 'A';(通过 '' 描述为字符类型)
整数赋值:char c2 = 65;(通过十进制数65在字符集中对应的字符赋值)
进制赋值:char c3 = '\u0041';(通过十六进制数41在字符集中所对应的字符赋值)

public class Test5{
	public static void main(String [] args){
		// char 字符类型 任何被英文单引号包括的内容 且只能有一个 
		// char取值范围 0 ~ 65535 无符号
		char ch1 = 'a';
		char ch2 = 'B';
		char ch3 = '3';
		char ch4 = '中';
		char ch5 = ',';
		System.out.println(ch1);
		System.out.println(ch2);
		System.out.println(ch3);
		System.out.println(ch4);
		System.out.println(ch5);
		
		// char ch6 = '15'; 编译报错 因为字符只能存一个内容
		// System.out.println(ch6);
		// 当我们直接赋值0~65535 范围的数值将根据ASCII码表 或者 Unicode码表(万国码)来找到对应的内容
		// ASCII码表 美国标准信息交换码
		char ch7 = 97;
		System.out.println(ch7);
		
		char ch8 = 98;
		System.out.println(ch8);
		
		char ch9 = 99;
		System.out.println(ch9);
		
		char ch10 = 20013;
		System.out.println(ch10);
		
		char ch11 = 20320;
		System.out.println(ch11);
		
		// char类型也可以直接以unicode编码赋值
		// Unicode记录了世界大多数国家的语言 中文的取值范围是 \u4e00 ~ \u9fa5
		char ch12 = '\u4f60';
		System.out.println(ch12);
		
		char ch13 = '\u4e00';
		System.out.println(ch13);
		
		char ch14 = '\u9fa5';
		System.out.println(ch14);
	
	}
}

2.转义字符

public class Test6{
	public static void main(String [] args){
		// 转义字符 表示用于处理一些特殊的符号 作为字符文本使用 不再具有特殊含义
		char ch1 = '\'';
		System.out.println(ch1);
		
		char ch2 = '\\';
		System.out.println(ch2);
		
		// \n 换行
		System.out.print("hello world \n 世界你好\n");
		
		// \t 制表位 符
		System.out.println("床前明月光\t疑似地上霜");
		System.out.println("举头望明月\t低头思故乡");
		
		
		// \"
		char ch3 = '\"';
		System.out.println(ch3);	
	}
}

3.String类型

public class Test7{
	public static void main(String [] args){
		String str1 = "abcdefg";
		String str2 = "hel   lo ,;'['.p[.,./'  ";
		String str3 = "中国";
		String str4 = "                1";
		System.out.println(str1);
		System.out.println(str2);
		System.out.println(str3);
		System.out.println(str4);
			
		String str5 = "\"";
		System.out.println(str5);
		
		String str6 = "\u4e00 \u4e01";
		System.out.println(str6);
		
		short s1 = -65;
		char ch1 = (char)s1;
		System.out.println(ch1);
	}
}

4.类型转换

4.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);	
	}
}

4.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);
	}
}```
>特殊情况:将超过目标类型取值范围的数值强制转换
```java
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 1101
		
		int ch1 = 67;
		char numa = (char)ch1;
		System.out.println(numa);	
	}
}

5.运算符

5.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);
	}
}
public class Test5{
	public static void main(String [] args){
		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);
	}
}

5.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);
	}
}

5.3 关系运算符

public class Test7{
	public static void main(String [] args){
		// 关系运算符 两个操作数或者表达式关系是否成立
		// 最终的结果为boolean类型 要么为true  要么为false
		int 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);
	}
}

5.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);
	}
}

5.5 三目运算符

public class Test11{
	public static void main(String [] args){
		// 三目(三元)运算符 
		// 布尔表达式 ?  结果1 : 结果2
		// 如果布尔表达式条件成立 则执行结果1  否则执行结果2
		int age = 18;
		System.out.println(age >= 18 ? "成年了" : "未成年");
		
		int numa = 20;
		int numb = numa > 20 ? 25 : 300;
		System.out.println(numb);

	}
}

6. Scanner接受输入信息

程序运行中,可在控制台(终端)手动录入数据,再让程序继续运行。
使用顺序:
1.导入 java.util.Scanner
2.声明Scanner类型的变量。
3.使用Scanner类中对应的方法(区分类型):
.nextInt(); //获得整数
.nextDouble(); //获得小数
.next(); //获得字符串
.next().charAt(0); //获得单个字符
注意:如果输入了不匹配的数据,则会产生 java.util.InputMismachException

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("-----------------------------");
	}
}```
posted @ 2021-07-24 13:36  码丁XIA  阅读(63)  评论(0)    收藏  举报