语言基础
一、课前复习
1、Java语言的特点
2、Java的执行机制
3、Java中的标识符命名规则
二、变量
2.1 变量的定义
变量三要素:
1、变量类型
2、变量名
3、值
注意:一个隐含的要素是,内存地址。
2.2 变量的基本使用
public class Demo01 { public static void main(String[] args) { // 先声明 int money; // 后赋值 money = 200; // 应用 System.out.println(money); } }
注意:Java是强类型语言,值必须与类型一致。
2.3 变量定义的三种方式
public class Demo01 { public static void main(String[] args) { // 方式1:先声明后赋值 // 先声明 int money; // 后赋值 money = 200; // 应用 System.out.println(money); // 方式2:声明的同时赋值 int count = 1; // 第二次赋值 count = 2 + 3; System.out.println(count); // 结果为5 // 方式3,同时声明多个变量[了解,不优秀,不推荐使用] int n1, n2 = 1, n3, n4 = 5, n5; System.out.println(n2); // System.out.println(n5); // 报错,没有赋值 } }
三、数据类型[重点]
3.1 分类
基本数据类型:
整数
byte
short
int
long
小数
float单精度
double双精度
布尔
字符
引用数据类型:除了基本数据类型以外的其他类型
字符串
数组
对象
3.2 整数
public class Demo02 { // 整数类型 public static void main(String[] args) { // byte 1字节 范围:-128~127 byte num1 = -128; // short 2字节 范围:-32768~32767,-2^15 ~ 2^15-1 short num2 = 32767; System.out.println(num2); // int 4字节 范围:-2^31 ~ 2^31-1,-2147483648~2147483647 int num3 = 2147483647; // long 8字节 范围:-2^63 ~ 2^63-1 long num4 = 214748364464564648L; // 注意:Java中整数默认类型是int,如果要定义一个long类型 //,赋值时需要在数字后面加一个L,大小写均可 // 推荐使用大写的L,避免被误认为数字1 } }
3.3 小数
public class Demo03 { // 小数 public static void main(String[] args) { // 注意:小数在计算机表示是不精确的,需要精确运算以及大整数运算时,应该使用BigDecimal类 System.out.println(1-0.9); // 小数采用科学计数法来保存 // float,4字节,负数范围:-3.4x10^38~-1.4x10^-45,正数范围:1.4x10^-45~3.4x10^38 // 注意:Java中小数默认类型是double,如果要使用float需要在最后加一个f float f1 = 1000000234682.23456789F; System.out.println(f1); // 注意:long类型虽然有8个字节,但是存储的范围比float小,因为float使用指数存储 // double 8字节,负数范围:-1.7x10^308~-4.9x10^-324,正数范围:4.9x10^-324~1.7x10^308 double d1 = 1000000234682.23456789; System.out.println(d1); } }
3.4 布尔
public class Demo04 { // 布尔 public static void main(String[] args) { // boolean 1字节,值为true或者false,true表示为真,false表示假 boolean b = true; b = false; System.out.println(b); } }
3.5 字符
字符集:
ASCII:1字节
ISO-8859-1:1字节,很多时候相当于ASCII
GB2312:早期中文字符集,使用2个字节,各取高位的一部分来表示,可以支持几千个中文
GBK:中文字符集,使用2个字节,各取高位的一大部分来表示,可以支持更多的中文
GB18030:中国通用的字符集,
Unicode:万国码,2字节,能支持大多数国家的文字,包含ASCII的内容
UTF-8:统一传输格式,支持国际上大多数国家文字,是现在通用的字符集,一般英文1个字节,中文等其他文字3-4个字节。
UTF-16、UTF-32
注意:乱码出现的原因是写入的字符集和读取的字符集不一致。
public class Demo05 { // 字符 public static void main(String[] args) { // char 2字节 范围数字为0~65535 // 字符采用单引号赋值 char ch1 = 'A'; System.out.println(ch1 + 1); // 也可以采用数字赋值 char ch2 = 66; System.out.println(ch2); // 中文 char ch3 = '中'; System.out.println(ch3); System.out.println((int)ch3); // 万国码 char ch4 = '\u4f01'; // 十六进制 System.out.println(ch4); // 万国码 char ch5 = 20225; System.out.println(ch5); // 转义字符 char ch6 = '\''; System.out.println(ch6); char ch7 = '\\'; System.out.println(ch7); System.out.print("a\nb"); System.out.println("a\tb"); System.out.println("71\t8\t9\t10"); System.out.println("11\t1454\t13\t14"); } }
3.6 引用数据类型【字符串】
public class Demo06 { // 字符串 public static void main(String[] args) { //String 使用""引入内容,可以写入多个字符 String str1 = "Hello"; String str2 = "中国人中国心"; String str3 = "我家有一只🐕"; System.out.println(str3); } }
四、类型转换
1、自动类型转换
// 类型转换 public class Demo07 { public static void main(String[] args) { // 1、自动类型转换 // 类型兼容,目标类型大于源类型 byte b = 127; int n = b; // float比long范围大 long l1 = 234792374923749283L; float f = l1; // char放入int char ch = '你'; n = ch; } }
2、强制类型转换
// 类型转换 public class Demo08 { public static void main(String[] args) { // 1、强制类型转换 // 类型兼容,目标类型小于源类型 // 考虑是类型的范围大小,而不是值 int n = 1; byte b = (byte) n; // float比long范围大 float f = 1.5f; long l1 = (long) f;// 值为1,截断 // char与short // char的范围与short的范围不重叠,需要相互转换 char ch = 65; short sh1 = (short) ch; short sh2 = 20; char ch1 = (char) sh2; // 超出最大值,或者最小值,会循环 int n1 = -129; byte b2 = (byte) n1; System.out.println(b2); } }
五、运算符
5.1 算术运算符
public class Demo09 { // 算术运算符 public static void main(String[] args) { // 加 int n = 5 + 3; int n1 = n + 3; int n2 = n + n1 + 2 + 5; // 当有字符串时,+作用是拼接字符串 System.out.println("hello, " + n2); System.out.println("A" + 1); // 字符相加结果得到数字,要显示字符,需要强制转换 System.out.println((char)('A' + 1)); // 减 int n3 = -5 - 6; // 乘 int n4 = 5 * 3; // 除 // 注意:两个整数相除,得到的还是整数 double n5 = 5 / 2; System.out.println(n5); // 求余(求模,取模) int n6 = 5 % 2; System.out.println(n6); // 1 int n7 = -5 % 2; System.out.println(n7); // -1 int n8 = 5 % -3; System.out.println(n8); // 2 int n9 = -5 % -3; System.out.println(n9); // -2 System.out.println(5.5 % 2); // 1.5 System.out.println(5.5 % 2.5); // 0.5 // 混合运算规则:先算乘除余,后算加减,可以通过小括号改变优先级 } }
一元(单目)运算符:只需要一个操作数。
public class Demo10 { // 一元运算符 public static void main(String[] args) { int n = 3; // n++;// 相当于n = n + 1; ++n;// 相当于n = n + 1; System.out.println(n); int m = 5; // m--;// 相当于m = m - 1; --m;// 相当于m = m - 1; System.out.println(m); // 当参与其他运算时,++(--)在前,就先自增,再参与运算,++(--)在后,先参与运算,后自增 int n1 = 3; int a = --n1 + 5; System.out.println(a); System.out.println(n1); int n2 = 2; // 2 + 4 + 5 + 5 int b = (n2++)+(++n2) + (++n2) + (n2++); System.out.println(b); System.out.println(n2); // 经典面试题 byte b1 = 1; // b1++; b1 = (byte) (b1 + 1); System.out.println(b1); // b1++; 与 b1 = b1 + 1; // 自增会自动转换类型,而+法不会,需要强转类型 } }