Java变量与基本数据类型
1 - 关键字与保留字
关键字(keyword)的定义:被Java语言赋予了特殊含义,用作专门用途的字符串(单词)
特点:关键字中所有字母都为小写
具体关键字:以后会慢慢接触到
保留字:现java版本尚未使用,但以后的版本可能会作为关键字使用,注意:自己命名标识符时避免使用这些保留字
goto,const
2 - 标识符(Identifier)
1 - 标识符
Java对各种变量,方法和类等要素命名时使用的字符序列称之为标识符
技巧:凡是自己可以起名字的地方都叫标识符如 变量名 类名 方法名 接口名等
2 - 定义合法标识符规则
1 - 由26个英文字母大小写。0-9,_或$组成
2 - 数字不可以开头
3 - 不可以使用关键字和保留字,但是能包含关键字的保留字
4 - Java中严格区分大小写,长度无限制
5 - 标识符不能包含空格
// 如果不遵守规则,则报错,编译不通过! class Static{} class Hello_${} class _Mytest{}
3 - Java中的名称命名规范(如果不遵守 编译也能通过)
1-包名:多单词组成时所有字母都小写:xxxyyykk
2-类名,接口名:多单词组成时,所有单词的首字母大写:MyTest
3-变量名,方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxYyyZzz
4-常量名:所有字母都大写。多单词时每个单词用下划线连接:xx_yy_zz
注意:
1-在起名字时,为了提高阅读性,尽量有意义,“见名之意”
2-java采用Unicode字符集,因此标识符也可以使用汉字声明,但是不建议使用
// 变量命名 public class Test{ public static void main(String[] args){ int myNumber = 520; System.out.print(myNumber); } } // 输出:520
4 - 变量
1 - 变量的概念
1 - 内存中的一个存储区域
2 - 该区域的数据可以在同一类型范围内不断变化
3 - 变量是程序中最基本的存储单元。包含变量类型,变量名,和存储的值
2 - 变量的作用
用于在内存中保存数据
3 - 使用变量需注意
1 - java中每个变量必须先声明,后使用
2 - 使用变量名来访问这块区域的数据
3 - 变量的作用域:其定义所在的一对{}内
4 - 变量只有在其作用域内才有效
5 - 同一个作用域内,不能定义重名的变量
// java定义变量的格式:数据类型 变量名 = 变量值; // 变量必须先声明再使用 class VariableTest{ public static void main(String[] args){ // 变量的定义 int myAge = 22; // 变量的使用 System.out.print(myAge); // 变量的声明 int myNumber; // 变量的赋值 myNumber = 100; System.out.println(myNumber); } }
5 - java中定义的数据类型
1 - 对于每一种数据都定义了明确的具体数据类型(强类型语言),在内存中分配了不同大小的内存空间
2 - 数据类型的分类
1 - 基本数据类型(primitive type)
1 - 数值型[包括整型(byte\short\int\long)和浮点型(float\double)]
2 - 字符型(char)
3 - 布尔型(boolean)
2 - 引用数据类型(reference type)
1 - 类(class)
2 - 接口(interface)
3 - 数组(array )
3 - 8种基本数据类型介绍
public class VariableTest1 { public static void main(String[] args) { // 1.整型:byte(1字节=8bit) short(2字节) int(4字节) long(8字节) // byte范围:-128 - 127 byte b1 = 12; byte b2 = -128; // b2 = 128; 编译不成功 System.out.println(b1); // 12 System.out.println(b2); // -128 //声明 short int long 数据类型 short s1 = 128; int i1 = 1234; long l1 = 1212L; //声明long数据类型时必须以L或l结尾 System.out.println(s1); System.out.println(i1); System.out.println(l1); // 通常定义整型变量时,使用int型 // 2.浮点型:表示带小数点的数值分为 单精度float(4字节) \ 双精度double(8字节) // 单精度float:尾数可以精确到7位有效数字,表示数值的范围比long还大 // 注意:定义float类型变量时,变量要以 F 或者是 f 结尾 float f1 = 2.5F; System.out.println(f1+1); // 3.5 // 双精度double :尾数可以精确到14位有效数字 double d1 = 123.4; System.out.print(d1); // 123.4 // 通常定义浮点型变量时,使用double型。 // 3.字符型:char (1字符=2字节) // 定义char型变量,通常使用一对 '',内部只能写一个字符,注意字符串才能写多个字符 char c1 = 'a'; c1 = 'A'; System.out.println(c1); // A char c2 = '中'; System.out.println(c2); // 中 char c3 = '\n'; System.out.println(c3); // 换行 // 表示方式:1-申明一个字符 2-转移字符 3-直接使用 Unicode 值来表示字符型常量 char c4 = '\t'; // 制表符 System.out.println('world'+c4); char c5 = '\u0043'; // unicode 值 System.out.println(c5); // 4.布尔型:Boolean // 只能取两个值之一:true false // 常常在条件判断,循环结构中使用 boolean boor = true; System.out.println(boor); // true boolean isMarried = true; if (isMarried) { System.out.println('你就不能参加单身party'); }else{ System.out.println('你可以认识更多单身的小姐姐'); } } }
6 - 基本数据类型之间的运算
前提:这里讨论的只是7中基本数据类型变量间的运算。不包含boolean类型的。
1 - 自动类型提升(前三个做运算都是int型)
byte、char、short --> int --> long --> float --> double
结论:当容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型。
public class VariableTest1 { public static void main(String[] args){ byte b1 = 2; int i1 = 12; // byte res = b1 + i2;编译不通过 int res = b1 + i1; //long res = b1 + i2; 编译通过 // float res = b1 + i2; 编译通过 short s1 = 123; double d1 = s1; System.out.println(res); // 14 System.out.println(d1); // 123.0 //**********************************************************// char c1 = 'a'; // 97 int num = 10; int res2 = c1 + num; System.out.println(res2); // 107 short s2 = 10; //short res3 = c1 + s2; 编译不通过,两种数据类型不兼容 //char res3 = c1 + s2; 编译不通过 //byte res3 = c1 + s2; 编译不通过 int res3 = c1 + s2; System.out.println(res3); // 107 } }
2 - 强制类型转换
强制类型的转换也叫:自动类提升运算的逆运算
说明:此时的容量大小指的是,表示数的范围的大和小,比如:float容量要大于long的容量
/* 1-需要使用强转符:() 2-注意点:强制类型转换,肯导致精度损失 */ public class VariableTest3 { public static void main(String[] args){ double d1 = 12.3; // int i1 = d1; 编译不通 // 精度损失举例1 int i2 = (int)d1; System.out.print(i2); // 截断操作 // 输出 12 // 没有精度损失 long l1 = 123; short s1 = (short)l1; System.out.println(s1); // 输出 123 // 精度损失举例2 int i3 = 128; byte b1 = (byte)i3; System.out.println(b1); // -128 } } class VariableTest4 { public static void main(String[] args) { // 1-编码情况1 long l1 = 1212; // 忘记加L System.out.println(l1); // 这里会自动类提升 转成 int 也就输出 1212 // 这里如果超出 int 范围 则编译不通过 // float f1 = 12.4; 这里如果忘记加 F 则编译不通过 // 2-编码情况2 // 注:整型常量,默认类型为 int 浮点型常量,默认类型为 double byte b = 2; // byte sum1 = b + 1; 编译失败 // float sum2 = b + 1.5; 编译失败 } }
7 - 字符串类型(String)
1 - String不是基本数据类型,属于引用数据类型,也是一种类
2 - 使用方式与基本数据类型一致,例如:String str = '韩信';
3 - 一个字符串可以串接另一个字符串,也可以和8种数据类型做运算,且只能是连接运算:+,详见以下代码
/* String类型变量的使用 1-String属于引用数据类型,翻译为 字符串 2-声明String类型变量时,必须使用一对 "" 3-运算结果任然是String类型 */ public class StringTest { public static void main(String[] args) { String s1 = "Hello World"; System.out.println(s1); String s2 = "a"; String s3 = ""; // String num = 1; 编译不通过,必须写成 String num = "1"; // char c1 = ''; 编译不通过 // 与其它基本数据类型的连接运算 int number = 2017; String numberStr = "学号:"; String info = numberStr + number; // + 连接运算 System.out.println(info); boolean b1 = true; String info2 = info + b1; System.out.println(info2); // 学号:2017true // 练习1 int num = 10; char c1 = 'a'; // 97 String str = "hello"; System.out.println(num + c1 + str); // 107hello System.out.println(num + str + c1); // 10helloa System.out.println((num + str) + c1); // 10helloa System.out.println((num + c1) + str); // 107hello // 练习2 // 打印 * * System.out.println("* *"); // * * System.out.println('*'+'\t'+'*'); // 93 System.out.println('*'+"\t"+'*'); // * * System.out.println('*'+'\t'+"*"); // 51* System.out.println('*'+('\t'+"*")); // * * } }