《Java基础入门 极速版》
ch02 Java基础
Java语言基础有:变量、标识符、数据类型和运算符。
2.1 变量
【例题1】变量举例
package cn.du.ch02;
public class Java01_Variable {
public static void main(String[] args) {
// TODO 变量
System.out.println("变量【杜老师整理】");
// 所谓得变量,其实就是可以改变得向量存储
// TODO 1. 声明变量
// 数据类型 变量名称
String name;
// TODO 2. 变量赋值
name = "杜老师";
// TODO 3. 变量使用
System.out.println("name="+name);
// 实际开发时,可以将第一步和第二步合并在一起
String username = "王五";
System.out.println("username="+username);
}
}
2.2 标识符
【例题2】标识符举例 中文也可做标识符
package cn.du.ch02;
public class Java02_Identifier {
public static void main(String[] args) {
// TODO 标识符
System.out.println("标识符【杜老师整理】");
// 所谓得标识符,其实就是用于标识常量、变量、属性、方法、类等命名的符号或名字,变量名就是标识符
// 主要用于起名
String name = "杜老师";
// TODO 标识符得命名规则
// 1. 拉丁字母、汉字
// 有意义得英文单词
String username = "李四";
String 姓名 = "王老五";
System.out.println("name="+name);
System.out.println("username="+username);
System.out.println("姓名="+姓名);
// wx, qq
// 2. 符号
// @ # %
// Java语法中只能使用美元$符号和下划线作为标识符,其他符号称之为特殊符号,不能作为标识符
// 空格也属于特殊符号,所以也不能作为标识符使用
String user_name = "张三1";
String user$name = "张三2";
//String user@name = "zhangsan"; //爆红 违规
//String user#name = "zhangsan"; //爆红 违规
//String user name = "zhangsan"; //爆红 违规
System.out.println("user_name="+user_name);
System.out.println("user$name="+user$name);
// 3. 数字
// 阿拉伯数字 0 ~ 9也可以作为标识符使用
String name1 = "张三";
String name_1 = "张山";
// 如果标识符以数字开头,那么会被识别为数字,那么就不能作为标识符使用了。
//String 1name = "zhangsan";
// 4. 标识符得重复问题(区分大小写)
// 在同一个大括号内,标识符不能重复
// Java中标识符是区分大小写得。
String Name = "李四四";
// 5. 预先定义好得标识符名称(关键字,保留字)
// 所有得关键字和保留字都是采用小写,所以如果采用大写是没有问题。
String Static = "张三山";
// 6. 多个单词拼接在一起(驼峰标识)
String userName = "张三";
// 7 . 标识符得长度没有限制
System.out.println("name1="+name1);
System.out.println("name_1="+name_1);
System.out.println("Name="+Name);
System.out.println("Static="+Static);
System.out.println("userName="+userName);
}
}
2.3 数据类型
【例题3】数据类型 默认的浮点数是double, 默认的整数是int (-21亿~21亿), 1.0f --- flout, 1l -- long
package cn.du.ch02;
public class Java03_Datatype {
public static void main(String[] args) {
// TODO 数据类型
String name = "杜老师";
//name = "杜老师"; //没有类型 爆红
// TODO 数据得存储单位
// 1. 比特(bit位) : 数据运算得最小存储单位
// 2. 字节(byte) : 数据最小存储单位
// bit和byte可以互相转换得
// 1 byte = 8 bit位
// KB, MB, GB, TB....PB, EB...
// 1024 Byte => 1KB
// 1024 KB => 1MB
// 1024 MB => 1GB
// 1024 GB => 1TB
}
}
【例题3.1】基本数据类型举例 char 姓 = '杜';
package cn.du.ch02;
public class Java03_Datatype_1 {
public static void main(String[] args) {
// TODO 基本数据类型
System.out.println("基本数据类型【杜老师改编】");
// TODO 1. 整数类型
// byte : 8位
byte b = 10;
// short : 16位
short s = 10;
// int : 32位
int i = 10;
// long : 64位
long lon = 10;
System.out.println("1. 整数类型");
System.out.println("b="+b);
System.out.println("s="+s);
System.out.println("i="+i);
System.out.println("lon="+lon);
// TODO 2. 浮点类型:含有小数点得数据类型
// 根据计算精度分为
// 默认情况下,小数点得数据会被识别位精度较高得双精度double类型
// float : 单精度浮点类型,数据需要使用F(f)结尾
float f = 1.0F;
// double : 双精度浮点类型
double d = 2.0;
System.out.println("2. 浮点类型");
System.out.println("f="+f);
System.out.println("d="+d);
// TODO 3. 字符类型
// 所谓得字符类型,其实就是使用符号标识文字内容
char c = '@';
char 姓 = '杜';
System.out.println("3. 字符类型");
System.out.println("姓="+姓);
System.out.println("c="+c);
// TODO 4. 布尔类型
// true, false,标识判断条件是否成立,如果成立,取值位true,如果不成立,那么取值位false
boolean bln = true;
System.out.println("4. 布尔类型");
System.out.println("bln="+bln);
}
}
【例题3.2】数据类型的转换
package cn.du.ch02;
public class Java03_Datatype_2 {
public static void main(String[] args) {
// TODO 数据类型的转换
System.out.println("数据类型的转换【杜老师改编】");
String name = "杜老师";
int age = 30;
System.out.println("name="+name);
System.out.println("age="+age);
name = "李思";
System.out.println("name="+name);
//name = age; //类型不匹配 爆红
// byte -> short -> int -> long -> float -> double
byte b = 10;
short s = b;
int i = s;
long lon = i;
System.out.println("b="+b);
System.out.println("s="+s);
System.out.println("i="+i);
System.out.println("lon="+lon);
float f = lon;
double d = f;
System.out.println("f="+f);
System.out.println("d="+d);
// Java中范围小的数据可以直接转换位范围大的数据,但是范围大的数据无法直接转换位范围小的数据
// 如果想要将范围大的数据转换位范围小的数据,那么需要使用小括号进行强制转换。
int i1 = (int)d;
System.out.println("i1="+i1);
}
}
【例题3.3】byte和char的关系
package cn.du.ch02;
public class Java03_Datatype_3 {
public static void main(String[] args) {
// TODO byte和char的关系
System.out.println("byte和char的关系【杜老师改编】");
// char(16 bit) -> byte(8 bit)
// asc码
// gb2112 gbk
// shift_jis
// Java : Unicode(utf8编码)
// 英文字母字符 : 一个字节就是一个字符
// 中日韩文字 : 3个字节是一个字符
String s = "中国人民abc";
String 名称 = "中华人民共和国ab12345";
// 获取字节的数量
System.out.println(" \"中国人民abc\" 存储占用字节数 = "+s.getBytes().length);
// 获取字符的数量
System.out.println(" \"中国人民abc\" 字符长度 = "+s.toCharArray().length);
// 获取字节的数量
System.out.println(" \"中华人民共和国ab12345\" 存储占用字节数 = "+名称.getBytes().length);
// 获取字符的数量
System.out.println(" \"中华人民共和国ab12345\" 存储占用字节数 = "+名称.toCharArray().length);
}
}
2.4 运算符
【例题4】算术运算符 1 / 2 = 0
package cn.du.ch02;
public class Java04_Operator {
public static void main(String[] args) {
// TODO 运算符
// 所谓得运算符就是参与数据运算得符号,Java定义得,无法执行定义
// TODO 表达式
// 所谓得表达式就是采用运算符和数据连接在一起形成符合Java语法规则得指令代码,称之为表达式
// TODO 算术运算符
System.out.println("算术运算符【杜老师改编】");
// 1. 二元运算符 : 两个元素参与运算得运算符, 1 + 2
// TODO 算术表达式 = 元素1 二元运算符 元素2
System.out.println("二元运算符");
// 这个表达式是有结果得,就需要有类型,这里得类型是元素种类型最大的那一种, 最小使用的类型为int类型
System.out.println(" 1 + 2 = "+ (1 + 2)); // 3
System.out.println(" 2 - 2 = "+ (2 - 2)); // 0
System.out.println(" 3 * 2 = "+ (3 * 2)); // 6
System.out.println(" 4 / 2 = "+ (4 / 2)); // 2
System.out.println(" 1 / 2 = "+ (1 / 2)); // 0.5 (int, int) => int
System.out.println(" 1.0 / 2 = "+(1.0 / 2)); // 0.5 (double, int) => double
System.out.println(" 5 % 2 = "+ (5 % 2)); // 1 (取余,模运算)
byte b1 = 10;
byte b2 = 20;
// byte b4 = b1 + b2; // (int, int) => int 最小使用的类型为int类型
byte b3 = (byte)(b1 + b2); // (int, int) => int
System.out.println(" byte b1 = 10;byte b2 = 20;byte b3 = (byte)(b1 + b2); b3="+b3);
System.out.println(" 1 + 2 * 3 = "+ (1 + 2 * 3) ); // 7
System.out.println(" (1 + 2) * 3 = "+ ((1 + 2) * 3)); // 9
// 2. 一元运算符 : 一个元素参与运算得运算符
// ++, --
// ++ 运算符的本质其实就是加1操作的简化版本,自增运算符
// ++ 运算符的本质其实就是减1操作的简化版本,自减运算符
System.out.println("一元运算符");
{
int i = 0;
//int j = i;
//i = i + 1;
int j = i++;
System.out.print(" int i = 0; int j = i++; 之后:");
System.out.print("i = " + i);
System.out.println(" j = " + j);
}
{
int i = 0;
//i = i + 1; // i = 1
//int j = i; // j = 1
int j = ++i;
System.out.print(" int i = 0; int j = ++i; 之后:");
System.out.print("i = " + i);
System.out.println(" j = " + j);
}
{
int i = 1;
int j = i--;
System.out.print(" int i = 1; int j = i--; 之后:");
System.out.print("i = " + i);
System.out.println(" j = " + j);
}
{
int i = 1;
int j = --i;
System.out.print(" int i = 1; int j = --i; 之后:");
System.out.print("i = " + i);
System.out.println(" j = " + j);
}
}
}
【例题4.1】赋值运算符
package cn.du.ch02;
public class Java04_Operator_1 {
public static void main(String[] args) {
// TODO 运算符 - 赋值运算符
// 等号其实就是赋值运算符:将等号右边表达式的结果赋值给等号左边的变量
// 赋值运算符需要考虑类型的关系
System.out.println("赋值运算符【杜老师整理】");
String name = "杜老师";
System.out.println("String name = \"杜老师\"; name="+name);
byte b = 10;
short s = b;
System.out.println("byte b = 10; short s = b; s="+s);
// TODO 复合赋值运算符: +=
// 如果元素进行运算后重新赋值给自己,那么可以将运算和赋值的符号进行简化
// 如果使用了复合赋值运算符,那么数据的类型不会发生变化。
int i = 1;
//i = i + 1;
//i = i * 1;
i *= 2;
System.out.println("int i = 1; i *= 2; i = "+i);
byte b1 = 10;
//b1 = b1 + 20; // int => byte
b1 += 20;
System.out.println("byte b1 = 10; b1 += 20; b1="+b1);
}
}
【例题4.2】关系运算符
package cn.du.ch02;
public class Java04_Operator_2 {
public static void main(String[] args) {
// TODO 运算符 - 关系运算符
// 所谓的关系运算符其实就是用于比较两个数据之间关系的运算符
// 关系运算符基本语法结构:
// TODO 关系表达式: 元素1(数据1,表达式1) 关系运算符[==, !=, >, >=, <, <=] 元素2(数据2,表达式2)
// 关系表达式的结果为布尔类型:如果表达式结果为预想相同,那么结果为true,如果表达式结果和预想不同,那么结果为false
System.out.println("运算符 - 关系运算符【杜老师改编】");
System.out.println("其中:int i = 10; int j = 20; ");
int i = 10;
int j = 20;
System.out.println( "i == j 结果 "+ (i == j) ); // false 双等号表示 两个数据是否相等
System.out.println( "i != j 结果 "+ (i != j) ); // true 感叹号等号表示 两个数据是否不相等
System.out.println( "i > j 结果 "+ (i > j) ); // false
System.out.println( "i >= j 结果 "+ (i >= j) ); // false, 大于等于表示 等于也可以,等于也可以
System.out.println( "i <= j 结果 "+ (i < j) ); // true
System.out.println( "i <= j 结果 "+ (i <= j) ); // true 小于等于表示 小于也可以,等于也可以
}
}
【例题4.3】逻辑运算符
package cn.du.ch02;
public class Java04_Operator_3 {
public static void main(String[] args) {
// TODO 运算符 - 逻辑运算符
// 所谓的逻辑运算符其实就是用于描述多个条件表达式之间的关系的运算符
// TODO 基本的语法结构:
// 变量 = (条件表达式1) 逻辑运算符 (条件表达式2)
// 结果的变量的类型依然为布尔类型
// 因为条件表达式的结果类型为布尔类型,所以逻辑运算符表达式的结果类型也是布尔类型,但是分几种情况:
// true true => ?
// false true => ?
// false false => ?
// true false => ?
System.out.println("运算符 - 逻辑运算符【杜老师改编】");
System.out.println("其中:int i = 10; int j = 20; ");
// TODo 逻辑运算符:&, 称之为与运算
// 与运算,要求两个条件表达式都必须计算出结果,只有当两个结果都是true时,最终结果为true,其他情况全是false
{
int i = 10;
boolean result = (i < 5) & (i < 20);
System.out.println("(i < 5) & (i < 20) = "+result);
}
// TODo 逻辑运算符:|, 称之为或运算
// 或运算,要求两个条件表达式都必须计算出结果,只要任何一个结果为true,那么最后结果就是true
// 两个表达式的结果都是false,那么最终的结果才是false
{
int i = 10;
boolean result = (i < 5) | (i > 20);
System.out.println("(i < 5) | (i > 20) = "+result);
}
// TODo 逻辑运算符:&&, 称之为短路与运算
// 短路与运算, 会根据第一个条件表达式的结果来判断,是否执行第二个条件表达式。
// 如果第一个表达式的结果为false,那么就无需执行第二个表达式
{
int i = 10;
int j = 20;
boolean result = (i > 10) && (++j > 30);
System.out.println("(i > 10) && (++j > 30) = "+result);
System.out.println("++j = "+j);
}
// TODo 逻辑运算符:||, 称之为短路或运算
// 短路或运算, 会根据第一个条件表达式的结果来判断,是否执行第二个条件表达式。
{
int i = 10;
int j = 20;
boolean result = (i == 10) || (++j > 30);
System.out.println("(i == 10) || ( ++j > 30 ) = "+result);
System.out.println("++j = " + j);
}
// TODo 逻辑运算符:!, 称之为非(相反)运算
// true => false
// false => true
{
int i = 10;
boolean result = i == 10;
boolean result1 = i > 10;
System.out.println("!(i == 10) = "+!result);
System.out.println("!(i > 10) = "+!result1);
}
}
}
【例题4.4】三元运算符
package cn.du.ch02;
public class Java04_Operator_4 {
public static void main(String[] args) {
// TODO 运算符 - 三元运算符
// 所谓的三元运算符其实就是三个元素参与运算的运算符
// 基本语法结构:
// 变量 = (条件表达式)?(任意表达式1):(任意表达式2)
// 运算规则:判断条件表达式的结果,如果为true,那么执行任意表达式1的值,如果为false,那么执行任意表达式2的值
System.out.println("运算符 - 三元运算符【杜老师改编】");
int i = 15;
int k = ( i == 10 ) ? 1 + 1 : 2 + 2;
System.out.println("int i = 15; ( i == 10 ) ? 1 + 1 : 2 + 2 = "+k);
String 性别 = "男";
String 尊称 = ( 性别.equals("男") ) ? "先生" : "女士";
System.out.println("性别 = \"男\"; 性别.equals(\"男\") ) ? \"先生\" : \"女士\"; = "+尊称);
}
}