标识符
【1】什么是标识符?
包,类 ,变量,方法等等,只要是起名字的地方,那个名字就是标识符。
【2】标识符定义规则:
1.四个可以:数字,字母(英文,汉字......),下划线,$。
2.两个不可以:不可以以数字开头,不可以使用java中的关键字。
3.见名知意:增加可读性。
4.大小写敏感。
5.遵照驼峰规则:
类名:首字母大写,其余遵循驼峰命名。
方法名,变量名:首字母小写,其余遵循驼峰命名。
包名:全部小写,不遵循驼峰命名。
6.长度无限制,但是不建议太长。
关键字
关键字:被java语言赋予特殊含义,用作专门用途的单词。
特点:java中所有关键字都是小写。
变量与常量
变量
【1】变量的声明格式:
type varName [value][,varName[=value]...];//[]中的内容为可选项,即可有可无。
数据类型 变量名 [=初始值][,变量名[=初始值]...];
【2】变量的声明:
(1)如果只定义一个变量,而没有给变量赋值的话,那这个变量就相当于没有定义。
(2)变量如果没有进行赋值的话,使用的时候会出错,出现错误:尚未初始化变量。
【3】变量的赋值:
我们自己定义的时候直接就可以用一句话定义:int age=10;
变量不可以重复定义。
package cn.study.demo;
public class Demo01 {
public static void main(String[] args) {
//变量的声明(定义变量)(以年龄为案例)
//java是一个强类型的语言,只要声明变量就必须定义类型
//定义整数类型的age
int age;
//对变量进行赋值操作
age=11;
System.out.println(age);
}
}
【4】变量的内存:
内存只占用一块空间。
【5】变量的作用域:
作用域就是作用范围,变量在什么范围中有效。
作用范围就是离他最近的{}。
常量
常量分为两种:
字面常量:1,2,3 ,'a','hello'等
字符常量:使用final修饰的PI等。
基本数据类型
Java是一种强类型语言,每个变量都必须声明其数据类型
Java的数据类型可分为两大类,基本数据类型和引用数据类型。
整数类型
分整数类型常量和整数类型变量。
整数类型常量
十进制整数,如:99,-500,0
八进制整数,要求以0开头,如015
十六进制数,要求以0x或者0X开头,如:0x15
二进制:要求0b或者0B开头,如:0b11
几进制:就是逢几进1的问题:
平时实际生活中用的最多的是:十进制
计算机用二进制最多
整数类型变量
整型数据类型:
比如:byte的右侧表数范围127怎么算出来的?
byte:1字节=8位
二进制:01111111
0 1*2^6 + 1*2^5 + 1*2^4 + 1*2^3 + 1*2^2 + 1*2^1 + 1*2^0
=64+32+16+8+4+2+1
=127
代码:
public class Test {
public static void main(String []args){
int num1=12;//默认情况下赋值就是十进制的情况
System.out.println(num1);
int num2=012;//前面加0,这个值就是八进制的
System.out.println(num2);
int num3=0x12;//前面加上0x或者0X,这个值就是十六进制的
System.out.println(num3);
int num4=0b10;//前面加上0b或者0B,这个值就是二进制的
System.out.println(num4);
//定义byte类型的变量
byte b=12;//定义一个byte类型的变量,名字叫做b,赋值位12
System.out.println(b);
//注意:超范围的赋值会报错。
short s=30000;
System.out.println(s);
int i=1234;
System.out.println(i);
//整数类型默认就是int类型的,所以1234567890是一个int类型的数,对于int类型的数来说,它超出范围了
//要想把一个数给long类型的变量,那么后面加上L或者1就可以了
long num5=1234567890L;
System.out.println(num5);
//注意:只有这个数超出int类型的范围了,后面才需要加上L,否则无需加上L也可以赋值给long类型
}
}
浮点类型
浮点类型常量
(1)十进制数形式,例如:
3.14 314.0 0.314
(2)科学计数法形式,如:
314e2 314E2(E的大小写没有区分) 314E-2
double f=314e2;//314*10^2-->31400.0
double f2=314e-2;//314*10^(-2)-->3.14
浮点类型变量
float类型又被称作单精度类型,尾数可以精确到7位有效数字,在很多情况下,float类型的精度很难满足需求。
而double表示这种类型的数值精度约是float类型的两倍,又被称作双精度类型,绝大部分应用程序都采用double类型。
float类型的数值有一个后缀F或者f,没有后缀F/f的浮点数值默认为double类型。
也可以在浮点数值后添加后缀D或者d,以明确其为double类型。
类型 占用存储空间
float 4字节
double 8字节
有效数字指的是,从左开始第一个不为零的数到最后一个数
代码:
public class Test1 {
public static void main(String[] args){
//浮点类型的常量有两种形式
//十进制形式
double num1=3.14;
System.out.println(num1);
//科学计数法形式
double num2=314E-2;
System.out.println(num2);
//浮点类型的变量:
//注意:浮点型默认是double类型的,要想将一个double类型的数赋给float类型,必须后面加上F或者f
float f1=3.1422343255656F;
System.out.println(f1);
//double类型后面可以加D或者d,但是一般我们都省略不写
double d1=3.1422343255656;
System.out.println(d1);
//注意:我们最好不要进行浮点类型的比较
float f2=0.3F;
double d2=0.3;
System.out.println(f2==d2);
/*
* 区别:
* = 赋值运算:将等号右侧的值赋给左侧
* == 判断==左右两侧的值是否相等
* ==运算符的结构要么是true要么是false
* */
}
}
字符类型
【1】Java中使用单引号表示字符常量,字符型在内存中占2个字节。
char 类型用来表示在Unicode编码表中的字符,Unicode编码被设计用来处理各种语言文字,它占2个字节,可容许有65536个字符。
代码:
public class Test2 {
public static void main(String[] args){
//定义字符类型的变量
//注意:字符类型中单引号里面只能是单个字符。
char ch1='A';
System.out.println(ch1);
char ch2='a';
System.out.println(ch2);
char ch3='额';
System.out.println(ch3);
char ch4='!';
System.out.println(ch4);
char ch5='@';
System.out.println(ch5);
}
}
【2】转义字符:
代码:
public class Test3 {
public static void main(String[] args){
//转义字符
System.out.println("aaa\nbbb");
System.out.println("aaa\tbbb");
System.out.println("aaa\bbbb");
System.out.println("aaa\rbbb");
}
}
public class Test4 {
public static void main(String[] args){
/*
字符类型我们看到的是它本身的字面常量,
底层用来计算的时候,按照它所对应的ASCII码的值进行。
char类型是按照Unicode表进行存储的,
这个对应ASCII是因为Unicode兼容了ASCII码,Unicode的前128位是ASCII码
*/
char ch1='A';
System.out.println(ch1);
System.out.println(ch1+100);
int a=(int)ch1;
System.out.println(a);
}
}
编码和字符集
【1】什么是编码?
编码是信息从一种形式转换为另一种形式的过程,也成为了计算机编程语言的代码简称编码。用预先规定的方法将文字、数字或其他对象编成数码,或将信息,数据转换成规定的电脉冲信号,编码在电子计算机、电视、遥控和通信等方面广泛使用,编码是信息从一种形式或格式转换为另一种信息或格式转换为另一种形式的过程,解码是编码的逆过程。
【2】由权威机构形成的编码表才可以称为字符集
ASCLL
英文字符集
用一个字节的7位表示
IOS8859-1
西欧字符集
用一个字节的8位表示
GB2312
简体中文字符集
最多使用两个字节编码
GBK
GB2312的升级,加入了繁体字
最多使用两个字节编码
Unicode
国际通用字符集,融合了目前人类使用的所有字符,为每个字符分配唯一的字符码。
解决乱码问题
当编辑器和解码器的编码格式不同时,可能会造成乱码,最好将编码格式定位GBK编码方式。
ANSI获取的是当前系统的编码格式。
编码格式不合适。
布尔类型
boolean类型有两个常量值,true和false,在内存中占一位(不是字节),不可以使用0或者非0的整数代替true和false。boolean类型用来判断逻辑条件,一般用于程序流程控制。
代码:
public class Test5 {
public static void main(String[] args){
//创建一个boolean类型的变量
boolean flag=true;
System.out.println(flag);
boolean flag1=1==1;
System.out.println(flag1);
boolean flag2=2>3;
System.out.println(flag2);
}
}
基本数据类型的转换
【1】什么是类型转换:
在赋值运算或者算数运算的时候,要求数据类型一致,就要进行类型的转换。
【2】类型转换的种类:
自动转换,强制转换。
在同一个表达式中,有多个数据类型的时候,应该如何处理:
多个数据类型参与运算的时候,数据类型,浮点类型,字符类型都可以参与运算,唯独布尔类型不可以参与运算。
【3】类型级别:
byte,short,char-->int-->long-->float-->double
当一个表达式中有多个数据类型的时候,要找出当前表达式中级别最高的那个类型,然后其余的类型都转换为当前表达式中级别最高的类型进行计算。
在进行运算的时候:
等号左右数据类型级别相等:直接赋值
等号左<右 :强制类型转换
等号左>右 :自动转换
特殊情况:对于byte,short,char类型来说,只要在他们的表数范围内,赋值的时候就不需要强制类型转换。
public class Test1 {
public static void main(String[] args){
//类型转换的两种形式。
double d=6;
System.out.println(d);//6.0
int i =(int)6.5;//强制类型转换
System.out.println(i);
int i1=(int)(10+122L+3.4F+3.41D+'a');
System.out.println(i1);
byte b=10;
System.out.println(b);
byte b1=(byte)128;
System.out.println(b1);
}
}
练习:final,字符常量,Scanner的使用
import java.util.Scanner;
public class Test1 {
public static void main(String[] args){
//实现求圆的周长和面积
//提取变量
//一个变量被final修饰,这个变量就变成了一个常量,这个常量的值就不可变了。
//这个常量就是我们所说的字符常量
//约定俗成的规定:字符常量的名字全部大写。
final double PI=3.14;
Scanner sc = new Scanner(System.in);
System.out.print("请输入圆的半径:");
int r=sc.nextInt();
//周长
double c=2*PI*r;
System.out.println(c);
//面积
double s=PI*r*r;
System.out.println(s);
}
}
import java.sql.SQLOutput;
import java.util.Scanner;
public class Test2 {
public static void main(String[] args){
//键盘录入学生的信息:年龄、身高、姓名、性别;
//键盘录入年龄:
Scanner sc=new Scanner(System.in);
System.out.print("请输入年龄:");
int age=sc.nextInt();
System.out.print("请输入身高:");
double height=sc.nextDouble();
System.out.print("请输入姓名:");
String name=sc.next();
System.out.print("请输入性别:");
char sex=sc.next().charAt(0);
System.out.println(name+' '+age+' '+height+' '+sex);
}
}