三、Java基础语法
一、java的三个方向 java SE java EE java ME特点:一次编译,处处执行二、 java语言基础
* 1.标识符:标识符可以标识类名,变量名,接口名,方法名(凡是可以在java语言中可以起名的)
* 标识符必须以数字,字母,下划线,$组成,不能以数字开头
* 严格区分大小写
* 关键字不能做标识符
* 标识符最好见名知意
* 类名:首字母大写,后面每个单词首字母大写HelloWorld
* 2.关键字:定义的一些具有特殊含义的序列
* 关键字都是小写
3.关于java语言中的字面值?
* 1.字面值:一眼看上去就知道是多少的数据,就是字面值(10,3.14,true,'a')
* 2.字面值得本质:字面值就是内存中的一块空间,这块空间有类型,有值
* 3.java语言中所有的字符都采用单引号括起来,java语言中所有的字符串都用双引号括起来
*/
public class day03 { public static void mian(String[] artgs){ System.out.println(10);//整数型的字面值 System.out.println(3.14);//浮点型 System.out.println(true);//布尔型 System.out.println(false);// System.out.println('a');//字符 System.out.println("sss");//字符串 } }
三、变量
/*
* 关于java语言的变量
*
* 1.java中如何定义变量,语法:
* 数据类型,变量名
* 2.如何给变量赋值,语法:
* 变量名=值
* 3.变量的本质是什么?
* 变量是内存中的一块空间,这块空间有“类型”,有“名字”,有“值”
* 4.深入变量
* //变量可以重复赋值,但不能重复声明
//在同一个域中,变量名不能重复
*/
public class day04 { public static void main(String[] args){ //int是一种数据类型,是整型 int a;//在内存中开辟一块空间,这块空间的类型是整型,给这块空间起名叫a //赋值 a=100; System.out.println(a); //申请一块int类型的空间,并起名b,并赋值10 int b=10; System.out.println(b); //重新赋值 b=100; //变量可以重复赋值,但不能重复声明 //在同一个域中,变量名不能重复 //int b=1000;//error //java语言中变量必须先声明,再赋值,才可使用 int c; c=20; System.out.println(c); //声明三个变量,类型都是int类型,i1,i2两个变量没有赋值,只有i3赋值 int i1,i2,i3 =333; //System.out.println(i1);//i1没有初始化,没有赋值 System.out.println(i3); } public static void m1(){ int b=2000; } }
/*
*5.关于变量作用域,有效范围,作用范围
* 出了大括号就不认识
*/
public class day05 { //类体 //声明变量 int m=100; public void m1(){ int m=200; System.out.println(m); } public void m(){ int k=100; } public static void main(String[] args){ int m2=100; System.out.println(m2); //System.out.println(k); System.out.println("---------------------------------"); for(int j=0;j<10;j++){ System.out.println(j); } //System.out.println(j); System.out.println("---------------------------------"); int p; for(p=0;p<10;p++){ System.out.println(p); } System.out.println("p的值为"+p); } }
/*
* 6.变量根据出现的位置可以分为两种:
* 1.局部变量:在方法体中声明的变量为局部变量,包括形式参数列表
* 2.成员变量:在方法之外声明的变量统称为成员变量
*/
public class Day06 { //成员变量 int i=100; //成员变量 int m; public void m1(){ int k=100;//局部变量 } public void m2(){ System.out.println(m); } public static void main(String[] args){ Day06 nd=new Day06(); nd.m2(); }
四、数据类型:
* 数据类型:8种 1 byte=8个bit 1kB=1024byte
* 1.基本数据类型:
* 整型(byte(1字节):取值范围:-128~127 1111 1111~0111 1111 (起始位为符号位,1表示负值,0表示正值)
* short(2个字节)
* int(4个字节),long(8个字节))
* 浮点型(float(4个字节),double(8个字节))
* 字符型(char(2个字节)):0~2的(16次方减1)0~65536
* 布尔型(boolean(1个字节),只取true,flase)
* 2.引用数据类型:数组,类,接口
*/
/*
* 3.进制换算
* 十进制转二进制:除2取余,逆序
* ' a'---97 'A'----65 '0'----48
*/
/*
* 4.字符编码:
* ASCII字符编码:采用一个字节编码,主要针对英文编码
* GB2312/GBK/GB18030主要针对汉子编码,三种编码从容量上是包含关系
* unicode:统一了世界上所有的文字编码,unicode有几种实现:UTF-8,UTF-16,UTF-32
*/
/*
* 5.关于char类型
* 1.char是字符类型,java中采用unicode编码。
* 2.底层占用两个字节
* 3.char类型涉及到字符编码方式:
* 字符如果采用编码和解码不一致的话,会出现乱码
*
*/
public class Day07 { public static void main(String[] args){ char c1='a'; //error //char c2='AB'; //汉字占用2个字节,所以java中的char可以存储一个汉字 char c3='中'; System.out.println(c3); } }
/*
* 6.关于java语言中的整型数据
* byte 1byte(8bit) -128~127
* short 2byte
* int 4byte
* long 8byte
*
* 7.整数类型有三种表示方式:
* 十进制
* 八进制 以0开始
* 十六进制 0x开始
*/
/*
* 结论:如果这个整数没有超出byte,short,char的范围,可以直接将这个整数赋值给byte,short,char
*/
public class Day09 { public static void main(String[] args){ //十进制 int i1=10;//常用 //八进制 int i2=010; //十六进制 int i3=0x10; System.out.println(i1); System.out.println(i2); System.out.println(i3); //将一个int类型的100字面值赋值给i4 int i4=100; //将一个int类型的123字面值赋值給long的l1 //int类型的容量小于long类型 //一下程序存在类型转换,只不过叫做“自动类型转换” long l1=123; //由于123后面加了一个L,所以就会把123看做long类型 //所以以下程序不存在类型转换,只是一个复制运算 long l2=123L; //int最大的值为2147483647,如果超过long l3=2147483648,则编译不成功 long l3=2147483647; long l4=2147483648L;//long类型 //将long转化成int类型,不能自动类型转化 //需要加强制类型转换符 //以下的程序虽然编译通过,但是程序运行阶段可能会损失精度,所以一定要谨慎 // long m1=100; //int m2=m1; int m3=(int)m1; //记忆一个规则,如果这个整数没有超出byte的范围,可以直接将这个整数赋值给byte类型 byte b1=10; byte b2=127; //byte b3=128;//128超出范围byte的取值范围 //如果这个整数没有超出short的范围,可以直接将这个整数赋值给short short s1=32767; //short s2=32768; //如果这个整数没有超出char的范围,可以直接将这个整数赋值给char char c1=97; char c2=65535; //char c3=65536; } }
/*
* 8.关于浮点型
* float 4个字节
* double 8个字节
*
*/
/*
* 9.布尔类型:
* 1.boolean类型的数据只有true和false,没有1和0
* 2.boolean类型的数据主要在逻辑运算和条件控制语句中
* 3.在java中基本类型可以互相转化,boolean类型比较特殊不可以转换其他类型
* 4.默认转化:容量小的类型自动会转化为容量大的类型
* 1.byte--->short--->int--->float--->double
* char---->
* 2.byte,short,char之间不会相互转换,只能先转化成int
* 5.强制转换:
* 1.将容量大的类型转换成容量小的类型,需要进行强制转换成int
* 2.只要不超出范围,可以将整型值直接赋值给byte,short,char
* 3.在多种类型混合运算中,首先将所有的数据类型转化成容量大的那种,在运算
*/
public class Day10 { public static void main(String[] args){ double d1=1.2; //强制类型转化 //float f1=3.2; float f2=(float)3.2; float f3=3.2F; boolean sex=true; if(sex){ System.out.println("男"); }else{ System.out.println("女"); } //byte,short,char做混合运算时候先各自转化成int做运算 byte b1=10; short s1=20; int i1=b1+s1; System.out.println(i1); //byte b2=b1+s1; } }
/*
* 10.关于基本数据类型转换规则:
* 1.8种基本数据类型除boolean类型之外可以相互转化
* 2.小容量向大容量转换叫做自动类型转化
* 3.byte--->short--->int--->long--->float--->double
* char--->
* 4.byte,short,char做混合运算时候,各自都先转化成int再做运算
* 5.大容量向小容量转换时强制类型转化,需要强制类型转化(编译虽然通过,运行期可能损失精度,谨慎使用)
* 6.如果整数没有超出byte,short,char的取值范围,可以直接将这个整数赋值给byte,short,char
* 7.多种数据类型做混合运算,先转换成容量大的那种,再做运算
* 8.byte:-127~128 short:32767
*/
public class Day11 { public static void main(String[] args){ //超出byte范围 //byte b1=1000; byte b2=20; short s1=1000; //变量不能重名 //short b2=1000; int i1=1000; //小容量向大容量转换,自动转换 long l1=i1; //将long强制转换成int类型 //int i2=l1; //因为大类型向小类型转换会出现问题,精度缺失 int i3=(int)l1;//因为1000没有超出int范围,所以转换时正确的 //因为java中的运算会转换成最大的类型 //而10和3默认为int,所以运算后最大的类型为int int i4=10/3; //声明10为long类型 long l2=10; //出现错误,多个类型混合运算过程中,会转换成容量最大的类型 //以下示例最大的类型为long,而i5为int,所以就会出现大类型的long到小类型int //int i5=l2/3; //可以强制转换,运算结果没有超出int范围 int i6=(int)l2/3; //可以使用long来接收运算结果 long l3=l2/3; //出现精度缺失问题,以下问题主要是优先级的问题: //将l2转化成int后,再将int类型的l2转换成byte类型,然后和3运算,那么运算结果是int类型而非byte类型 //byte b3=(byte)(int)l2/3;//错误 int b4=(byte)(int)l2/3; byte b5=(byte)(int)(l2/3); //不能转换,需要先转换成int---》byte //byte b6=(byte)l2/3; byte b7 =(byte)(l2/3); short s2=100; byte b8=5; //错误,short和byte类型运算,先转化成int在运算,所以int赋值给short会精度缺失 //short s3=s2+b8; short s4=(short)(s2+b8); char c1='a'; System.out.println(c1); //将char转化成byte类型 System.out.println((byte)c1); int i10=c1+100; System.out.println(i10); } }
五、转义字符
* 1.关于转义字符
* \t
* \n
* \'
* \"
*
*/
/*
*2. 默认值:
* byte,short,int,long:0
* float,double:0.0
* boolean: false
* char \u0000
*/
public class Day08 { public static void main(String[] args){ /* char c1='t'; System.out.print(c1); System.out.println("abc"); */ // \斜线在java语言中有转义功能,可以将普通的字符t,转化成制表符 char c1='\t'; System.out.print(c1); System.out.println("abc"); char c2='\''; System.out.println(c2); char c3='\\'; System.out.println(c3); char c4='\"'; System.out.println(c4); char c5='\n'; System.out.print("abc"); System.out.print(c5); System.out.println("def"); } }