1 包的概念
把一个项目分割成几个模块,为每一个模块建立包,把该模块的.java文件统一放到对应包,通过包更好的管理.java文件,并且更好的分工合作。可以尽量避免出现.java文件重名现象。
包命名的规则:
com.公司名.项目名.模块名
或者
org.公司名.项目名.模块名
eg:
com.kalos.owen.login
org.kalos.owen.reg
2 变量(二)
1)同时定义相同类型的多个变量
数据类型 变量名1,变量名2,变量名3...
eg: int a,b,c;
案例:Demo1
package com.kalos.demo; public class Demo1 { //编写一个main方法,定义4个int类型变量num1,num2 //num3,num4,分别把100,200,300,400给num1, //num2,num3,num4赋值,最后输出每一个变量的值 public static void main(String[] args) { /* int num1; int num2; int num3; int num4; */ int num1,num2,num3,num4; num1 = 100; num2 = 200; num3 = 300; num4 = 400; //syso+alt+/,自动生成输出语句 System.out.println(num1); System.out.println(num2); System.out.println(num3); System.out.println(num4); } }
2)变量的初始化:给变量的第1次赋值,称为变量的初始化。
定义变量的同时,直接给变量赋值(初始化)。
eg: int num = 100;
案例:Demo2
package com.kalos.demo; public class Demo2 { //main + alt + / + 回车:自动生成main方法 public static void main(String[] args) { int num1=100,num2=200; System.out.println(num1); System.out.println(num2); } } //在Demo3的main方法中定义3个int类型a,b,c,分别把 //100,200,300给变量赋值,最后输出每一个变量的值 package com.kalos.demo; public class Demo3 { public static void main(String[] args) { int a=100,b=200,c=300; System.out.println("a="+a); System.out.println("b的值是"+b); System.out.println("c="+c); } }
3)System.out.println("要显示的内容"+变量名);
System.out.println("num="+num);
num=100
4)变量必须要先定义,然后才可以使用
案例:Demo4
package com.kalos.demo; public class Demo4 { public static void main(String[] args) { // num=100; //变量必须要先定义,然后才可以使用。 int num1; // System.out.println(num1); //变量只有赋值(初始化)以后,才可以进行算术运算或者 //输出 } }
5)变量只有进行初始化以后,才可以进行输出或者参与算术运算
6)在同一个作用域({ })中,变量名不能重复。
案例:Demo5
package com.kalos.demo; public class Demo5 { public static void main(String[] args) { int num = 200; System.out.println(num); // int num; //在同一个作用域({}),变量名不能重复 } }
3 标识符:java中起名字的规范
1)标识符可以以字母,下划线_或者美元符号$开头,后面可以跟数字,字母,下划线_或者美元符号$。
切记:千万不要以数字开头。
正确: int a_1,b$,_a;
错误: int 1a,2num;
2)标识符中只有两个特殊字符:下划线_和美元符号$
错误: int a!,a¥,num&;
3)标识符严格区分大小写
int S,s; //S和s是两个不同的变量
4)标识符中不能出现空格
错误: int a b;
5)不能使用关键字命名
关键字:sun公司设计Java的时候,提前对一些单词赋予了特殊的含义,这些单词就是关键字,比如:int,public,static...
错误:int int;
4 Java中的数据类型:基本数据类型和引用数据类型
1)基本数据类型:4类8种
a)整数类型:byte , short , int , long
b)浮点(小数)类型:float,double
c)布尔类型:boolean
d)字符类型:char
2)引用数据类型:sun公司或者其他开发人员为了简化开发,而单独设计的全新的数据类型。
5 整型数据类型(整数类型):byte,short,int,long
1)byte: 取值范围-128~127之间,8位
01111111 = 1+2+4+8+16+32+64
= 7+24+96
= 127
byte取值范围太小了,测试中使用极少,但在开发中经常使用byte类型来实现上传和下载,记住byte的取值范围。
2)short:取值范围正负3W左右,16位,short取值范围太小,企业中使用极少。
3)int:取值范围正负21亿左右,32位,取值范围大,int是企业也中使用最为广泛整数类型。
4)long:超过int的取值范围都使用long来保存,64位,取值范围最大整数类型,企业中使用也极其广泛。
int a = 100;
5)字面量:参与算术运算或者赋值运算的数字,称为字面量。
整型字面量默认是int类型。
a)如果给byte或者short类型的变量赋值,系统会自动把整型字面量的类型由当前默认int类型,转换为对应byte或者short类型
eg: byte num1 = 100; //100: int--->byte
b)如果整型字面量的取值超过了int的取值范围,必须在该字面量的末尾加上L或者l,把该字面量由当前默认的int类型,转换为long类型。
c)字面量也可以称为常数(了解)。
案例:Demo6
package com.kalos.demo; public class Demo6 { //整型类型:byte,short,int,long //byte:-128~127 , 8位,测试中使用极少 //short:正负3W左右 ,16位,使用极少 //int: 正负21亿左右,32位,使用最为广泛 //long: 超过int的取值范围,使用long,64位,使用广泛 //字面量:参与赋值或者算术运算的数字,称为字面量,整型 //字面量默认是int类型。 //1 给byte或者short类型变量赋值,系统会自动的把 //整型字面量由当前默认的int,转换为对应short或者byte //2 如果整型字面量的取值超过int取值范围,必须在该 //字面量的末尾加上L或者l,把当前字面量由int类型转换 //为long类型 public static void main(String[] args) { byte num1 = 100; //分析:字面量100由当前默认int类型自动的转换为对应 //byte类型,赋值给num1 System.out.println(num1); short num2 = 1000; //int--->short System.out.println(num2); int num3 = 100000; System.out.println(num3); long num4 = 10000; System.out.println(num4); // long num5 = 100000000000; //报错了,100000000000超过int的取值范围。 long num6 = 100000000000L; System.out.println(num6); } }
6 浮点数据类型(小数):float,double
1)float:单精度,32位,虽然float占了32位,但是由于存储结构不同,float取值范围远远大于64位long,由于取值范围和精度都不如double,在企业中,float没有double使用广泛。
2)double:双精度,64位,取值范围大,精度高,企业中使用最为广泛浮点类型。
3)浮点类型字面量默认就是double类型,如果给float类型的变量赋值,该浮点类型字面量的末尾必须加上F或者f,把该字面量由默认double类型转换为对应float类型。
案例:Demo7
package com.kalos.demo; public class Demo7 { //浮点类型:float,double //float:32位,由于存储结构不同,32位float取值范围 //远大于64位long。没有double使用广泛。 //double:64位,取值范围大,精度高,使用最为广泛的 //浮点类型。 //浮点类型的字面量默认double,如果给float类型变量 //赋值,在该浮点类型字面量的末尾加上F或者f。 public static void main(String[] args) { double num1 = 100.666; System.out.println("num1="+num1); float num2 = 1.66F;//double-->float System.out.println("num2="+num2); } }
7 布尔类型:boolean
boolean :用来保存一个判断的结果,要么true,要么false
eg:boolean result = false;
boolean result = 100>50; //true
案例:Demo8
package com.kalos.demo; public class Demo8 { //布尔类型:保存一个判断的结果,要么true,要么false public static void main(String[] args) { boolean result1 = false; System.out.println("result1="+result1); boolean result2 = true; System.out.println("result2="+result2); boolean result3 = 100>200; // false System.out.println("result3="+result3); } }
8 字符类型:char
1)char:用来保存一个任意的字符,可以是字母,中文,日文...
char 变量名 = '单个字符';
不能赋空值
eg:
char c1 = 'a';
char c2 = '中';
'1' 和 1
'1'是一个字符,显示作用
1是数字,可以进行算术运算
char c3 = '1';
案例:Demo9
package com.kalos.demo; public class Demo9 { public static void main(String[] args) { char c1 = '夏'; System.out.println(c1); char c2 = '中'; System.out.println(c2); char c3 = 'z'; System.out.println(c3); char c4 = '6'; System.out.println(c4); // char c5 = '10'; //char类型的变量,只能保存一个字符,'10'是'0'和'1' //两个字符 // char c6 = '';不能把空赋值给char类型变量 char c7 = ' ';//空格也是一个字符 } }
2)char类型字符可以自动转换为一个int类型数字
eg:
char c1 = '中';
int num1 = c1;// '中'------>20013
案例:Demo10
package com.kalos.demo; public class Demo10 { public static void main(String[] args) { char c1 = '中'; int num1 = c1; //分析:首先c1中的'中'自动类型转换,由当前的char类型 //自动的转换为int类型('中'---->20013),最后把 //20013赋值给num1 System.out.println(num1); char c2 = '华'; int num2 = c2; //'华'----->21326,最后把21326赋值给num2 System.out.println(num2);//21326 } }
3)如果使用“+”连接多个char类型字符,首先在底层把char类型字符先转换为对应int类型的数字,然后执行加法运算。
案例:Demo11
package com.kalos.demo; public class Demo11 { public static void main(String[] args) { char c1='艾',c2=薇',c3='儿'; int sum = c1+c2+c3; System.out.println(sum); } }
4)char用来处理字符较为麻烦。
9 String:字符串
sun公司设计的一个引用类型,专门用来处理字符问题,企业中主要使用String来处理字符问题。
1)格式:
String 变量名 = "0个或者多个字符";
eg:
String str1 = "你好";
2)使用"+"来串联多个String,返回结果也是String
案例:Demo12
package com.kalos.demo; public class Demo12 { public static void main(String[] args) { String str1 = ""; System.out.println(str1); String str2 = "今天天气很好!"; System.out.println(str2); String str3 = "生命中总有生生不息的希望,"; String str4 = "和不期而遇的温暖!"; String str5 = str3 + str4; System.out.println(str5); } }
3)使用"+"来连接String和其他类型数据,返回结果也是String
案例:Demo13
package com.kalos.demo; public class Demo13 { public static void main(String[] args) { String str = "今天:"; int num1 = 100; String str1 = str + num1; System.out.println(str1); double num2 = 6.99; String str2 = str + num2; System.out.println(str2); boolean num3 = false; String str3 = str + num3; System.out.println(str3); } }
10 自动类型转换
数据会自动由取值范围小的类型向取值范围大的类型转换
1) byte->short->int->long->float->double
由于存储结构的不同,32位float的取值范围远远大于64位long
char->int
eg:
int num1=100;
double num2 = num1;
分析:num1中100会进行自动类型转换,由当前默认的int类型自动的转换为double(100----->100.0),最后把100.0赋值给num2。
2)自动转换不损失精度。
package com.kalos.demo; public class Demo14 { public static void main(String[] args) { int num1 = 10; double num2 = num1; //分析:首先num1中10进行自动类型转换,由当前的int //类型自动转换为double(10-->10.0),最后把10.0 //赋值给num2 System.out.println("num2="+num2); byte num3 = 110; double num4 = num3; //110--->110.0(byte--->double),最后把110.0 //赋值给num4 System.out.println("num4="+num4); } }
11 强制类型转换
根据需要把数据强制的转换为所要求的类型
1)格式: (要转换的类型)数据
eg:
double num1 = 100.99;
int num2 = (int)num1;//100
2)由浮点类型的数据强制的转换为整数,舍弃小数点后所有的数字。
3 ) 强制类型转换容易损失精度。
案例:Demo15
package com.kalos.demo; public class Demo15 { public static void main(String[] args) { //强制类型转换格式:(要转换的类型)数据 //强制类型转换容易损失精度 double num1 = 100.9999; int num2 = (int)num1;//100 System.out.println("num2="+num2); //由浮点类型的数据强制转换为整数,舍弃小数点后所有的 //数字。 } }