java数据类型
一、数据类型前言
1、标识符
可以简单的理解为一个名字。在Java中,我们需要标识代码的很多元素,包括类名、方法、字段、变量、包名等。我们选择的名称就称为标识符,标识符不能完全随意定义,并且遵循以下规则:
- 标识符可以由英文字母组成,数字,下划线,美元符号组成,其实也可以由中文组成,但是不建议,并且一定不能包含@,%空格等其他的特殊字符
- 不能以数字开头
- 标识符严格区分大小写 HELLO hello(HELLO 和hello是2个不同的标识符)
- 命名时,最好能做到见名知意
- 标识符不能是java中的关键字或者是保留字,但是名字中可以包含关键字public publics
2、关键字
在java语言中已经被赋予特定意义的一些单词(其实就是被官方占用的名字)。
一共有53个关键字。其中有两个保留字:const和goto。
1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|
abstract | boolean | break | byte | case | catch |
char | class | continue | default | do | double |
else | extends | false | final | finally | float |
for | if | implements | import | instanceof | int |
interface | long | native | new | null | package |
private | protected | public | return | short | static |
super | switch | synchronized | this | throw | throws |
transient | true | try | void | volatile | while |
- 01)用于定义数据类型的关键字: class interface byte short int long float double char boolean void
- 02)用于定义数据类型值的关键字: true false null
- 03)用于定义流程控制的关键字: if else switch case default while do for break continue return
- 04)用于定义访问权限修饰符的关键字: private protected public
- 05)用于定义类,函数,变量修饰符的关键字: abstract final static synchronized
- 06)用于定义类与类之间关系的关键字: extends implements
- 07)用于创建对象及引用对象和判断对象的关键字: new this super instanceof
- 08)用于处理异常的关键字: try catch finally throw throws
- 09)用于包的关键字: package import
- 10)其他修饰符关键字: native strictfp translent volatile assert
3、注释
Java代码的解释说明。不影响程序的运行,用于辅助读程。
// 单行注释 (适用于内容较短的注释)
/* 多行注释 / (适用于内容较长的大段注释)
/* 文档注释 */ (通常是标记在类或类的成员上,用于生成javadoc文档)
package com.tedu.zhushi;
/**
* 这个是专门讲解注释的文档
*/
public class TestZhuShiDemo {
//单行注释:适用于注释较短的内容,也可以用来注释代码
//选中要注释的内容,按ctrl+/,取消注释,再按crtl+/
/*
* 多行注释:适用于注释内容较多的时候
* 选中要注释的内容,按crtl+shift+/
*/
public static void main(String[] args) {
}
}
4、变量
4.1、什么是变量
在JAVA中,有的数据值是不固定的,总在变,我们还需要记录这些值,我们可以把这些值理解为变量。
变量是指在内存中开辟的一块存储空间,用于存放运算过程中需要用到的数据
4.2、如何声明/定义变量1)
方式一:先声明,后赋值
格式:变量类型 变量名; 例如:
//方式1:先声明,后赋值,先准备标签,然后再塞东西
//变量类型 变量名
int age;//表示声明了一个int类型的变量叫做age
age=18;//为age变量赋值,值为18
//准备声明三个整数类型int的变量
int age1,age2,age3;//表示声明了三个int类型的变量叫做age1,age2,age3
age1=19;
age2=20;
age3=30;
方式二:声明变量的同时为变量赋值
格式:变量类型 变量名 = 变量值; 例如:
//方式2:声明变量同时赋值
//变量类型 变量名 = 变量值
int age4=34;//表示声明了一个整数age4,值为34
int age5=50,age6=60,age7=70;
4.3、变量的注意事项
注意事项1: 未经声明的变量不能使用
//注意事项1:未经声明的变量不能使用
age=18;//报红线,因为变量没有声明
int age=19;
System.out.println(age);//输出age变量名中所包含的值
System.out.println(score);//报红线,因为变量没有声明
注意事项2: 变量的命名要符合标识符语法要求(参考标识符)
//注意事项2:变量的命名要尽可能符合标识符语法的要求
//尽量的见名知意,还要遵循驼峰命名法
//一个名字由多个单词组成时,要首字母大写
//类名第一个单词的首字母也要大写TestVariableZhuYi
//变量名是第一个单词的首字母要小写studentParentName
//中文可以作为变量名,但是不建议使用
int 年龄=18;
System.out.println(年龄);
- 除此之外,变量的命名应尽量做到见名知义,而且要遵循驼峰命名法。
驼峰命名:即如果变量的名字由多个单词组成,除第一个单词外,其他单词的首字母大写,其余的字母小写。 - 中文可以作为变量名,但不建议这样做
注意事项3: 变量的访问是指对变量值的访问,可以获取变量值,也可以为变量重新赋值
//注意事项3:可以对变量重新赋值
int a=100;
a=a+100;//先引用变量a,和100相加,变为200,然后重新给a赋值,此时a是200
System.out.println(a);
4.4、常量
在程序运行过程中一致不会改变的量成为常量。
二、数据类型之基本类型(八种)
1、前言:二进制、bit(位)、byte(字节)简介
- 十进制: 0 1 2 3 4 5 6 7 8 9
- 二进制: 0 1
用八位二进制数组成一组,表示一个数据例如:11001100,这样八位二进制的单位称之为Byte(字节),其中每个进制为成为bit(比特,位)
1Byte=8bit
1KB=1024B
1MB=1024KB
1GB=1024MB
1TB=1024GB
……
2、基本类型介绍
Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。
类型名称 | 字节空间 | 范围 | |
---|---|---|---|
整数型 | byte | 1 | -27 ~ 27-1或者-128 ~ 127 |
short | 2 | -215 ~ 215-1或者-32768 ~ 32767 | |
int | 4 | -231 ~ 231-1 | |
long | 8 | -263 ~ 263-1 | |
浮点型 | float | 4 | 单精度,对小数部分的精度不高,能精确到7位小数 |
double | 8 | 双精度,对小数部分的精度高,能精确到15位小数 | |
字符型 | char | 2 | 0~65535(就算值是汉字也是数字类型) |
布尔型 | boolean | 1 | 真 true 假 false |
2.1 int
- byte、short、int、long中,int是最常用的整数类型
- 一个int类型的变量占用4个字节(32位),最大表示范围为:-2^31 ~ 2^31-1,即 -2147483648 ~ 2147483647。
2.2 long
- 在表示整数时,如果int类型的范围不够,可以使用long型
- 一个long型的变量占用8个字节(64位),最大表示范围为:-2^63 ~ 2^63-1,即 -9223372036854775808 ~ 9223372036854775807
2.3 float/double
- 浮点数,就是小数,包括:float和double,即单精度浮点数和双精度浮点数。
- double精度高,有效数字15位,float精度低,精度7位,可见double类型的精度值是float类型的两倍,这正是其名称(双精度)的来由。
- 浮点数虽然表示小数,但是只能尽量精确,不是绝对精确,所以浮点数不能用来表示精确地值,如货币
2.4 boolean
- boolean类型适用于逻辑运算,表示某个条件是否成立,一般用于程序的流程控制。(后面会讲解流程控制)
- boolean类型只允许取值true或false,true表示条件成立,而false表示条件不成立。
- boolean型变量经常用于存储关系运算的结果,所谓关系运算就是比较两个变量的大小、相等等关系。
2.5 char
- 字符就是可以看到的都可以是字符
- char类型的范围是0~65535
- Java中有字符类型(char) 和 字符串类型(String)
//char类型
char c1='字';//声明了一个char类型的变量c1,存储了字
char c2='a';
char c3='1';
char c4=123;
System.out.println(c4);
//7.String类型--不是八大基本类型
String s1="字";//声明一个String类型的变量s1,存储了字
String s4="今天的天气真的太好了,可是我看不到";
String s2="a";
String s3="1";
三、案列
1、输入个人信息
java.util.Scanner in = new java.util.Scanner(System.in); //带包名写法
Scanner in = new Scanner(System.in); //在上面导过包了,这里就不用加包名了
先记住这个写法,这里是声明了一个扫描器(其实是一个管道,流),可以接收用户在控制台输入的数据
1、运行程序,在Eclipse的控制台(console窗口)中提示用户录入个人信息
2、用户根据提示,依次在提示内容的后面输入相应的信息
3、最后在控制台输出用户输入的内容
package com.tedu.demo;
//导包,导了java.util.Scanner这个包
import java.util.Scanner;
/**
* 输入个人信息
*/
public class TestInputInfo {
public static void main(String[] args) {
//1.在控制台输入内容,然后可以通过程序接收到你所输入的内容
//声明一个扫描器
Scanner sc=new Scanner(System.in);
//提示信息
System.out.println("请输入个人信息");
System.out.println("请输入姓名:");
//命令扫描器接受在控制台输入的内容
String name=sc.nextLine();//可以接受用户输入的内容作为字符串
System.out.println("请输入性别:");
String gender=sc.nextLine();
System.out.println("请输入年龄");
int age=sc.nextInt();//接受用户输入的内容为整数
//String age=sc.nextLine();
/*
* println 输出内容并换行
* print 输出内容不换行
*/
// System.out.print(name);
// System.out.print(",");
// System.out.print(gender);
// System.out.print(",");
// System.out.print(age);
System.out.println(name+","+gender+","+age);
}
}
2、圆形面积
假设 半径r = 50;
S(圆的面积) = π * r^2
C(圆的周长) = 2 * π * r
package com.tedu.demo;
import java.util.Scanner;
/**
* 来求圆的面积和周长
*/
public class TestCircle {
public static void main(String[] args) {
System.out.println("请输入圆的半径");
Double r=new Scanner(System.in).nextDouble();//接受在控制台输入的浮点数
System.out.println("半径为:"+r);
//输出圆的面积 π*r*r
System.out.println("圆的面积:"+3.14*r*r);
//输出圆的周长 π*2*r
System.out.println("圆的周长:"+2*3.14*r);
}
}
3、变量交换
接收用户输入的值a和b。
假设a=1,b=2将a和b的值做交换。
声明int变量a和int变量b如下:
int a = 1, b=2;
现在要求交换a、b变量的值(不能直接 a=2,b=1);
package com.tedu.typechange;
/**
* 实现变量交换案例
*/
public class TestChange {
public static void main(String[] args) {
int a=1;
int b=2;
//交换a,b两个变量的值,a=2,b=1
//新建一个第三方的变量c,然后让c接收a的值
int c=a;//c=1
//将b的值赋予a
a=b;//a=2
//将c的值赋予b
b=c;//b=1
System.out.println(a);
System.out.println(b);
}
}
四、基本类型的字面值规则
所谓的字面值也叫做字面量、直接量,是指在Java中直接写出来的数据。例如:
int a=100;//100就是变量a的字面值
double b=3.14;//3.14就是b的字面值
1、规则1:整数字面值是int类型
也就是说,在Java程序中直接写出来的整数,默认是int类型。例如:
//规则1:整数字面值是int类型
int a=100;//声明了一个int类型的变量a,字面值是100
System.out.println(100);//正确的
//System.out.println(12300000000);//编译错误,因为12300000000默认是int类型
System.out.println(12300000000L);//L表示12300000000是long类型
2、规则2:浮点数的字面值是double类型
也就是说,在Java程序中直接写出来的小数,默认是double类型。例如:
//规则2:浮点数的字面值是double类型
double x=3.14;//正确的
//float y=3.14;//编译错误,3.14默认是double类型,double占8个字节,float占4个字节
float y=3.14f;//f表示3.,14是float类型
float y1=3.14F;//f表示3.,14是float类型
3、规则3: 在不超范围的前提下, 可以使用int字面值为byte、short、char类型赋值,系统会自动按对应的类型处理
列如:
//规则3: 在不超范围的前提下, 可以使用int字面值为byte、short、char类型赋值,
//系统会自动按对应的类型处理
byte a1=127;//127默认是int类型,但是自动按照byte类型处理了
//byte a2=128;//因为128超过了byte类型的范围
short b1=32767;
char c1=65535;
//另外,在不超过范围的前提下,int类型的值也可以直接赋值给long类型的变量
long d1=1000;//正确,1000默认是int类型,但是自动转换了
//long d2=20000000000000;
4、规则4:字面值后缀LFD
- 整数后跟大写L或小写l – 表示该数值是long类型
- 小数后面跟大写F或小写f – 表示该数值是float类型
- 小数后面跟大小D或者小写d – 表示该数值是double类型
double d=3D;//3默认是int类型,加上D就是double
double d2=3;
System.out.println(d2);
5、规则5:进制前缀
什么也不写默认是十进制
0x 16进制 0x0001
0 8进制 023
0b 2进制 0b0101
\u char类型 16进制 默认值是\u0000
System.out.println(0x0123);//16进制的291
System.out.println(023);//8进制的19
System.out.println(0b0101);//2进制的5
五、扩展(生成模板)
1、点击windowPreferencesJavaEditorTemplatesNew…
2、然后填写如下内容
目的是输出nextLine,就可以快速生成Pattern的内容
String ${cursor} = new Scanner(System.in).nextLine();${:import(java.util.Scanner)}
然后点击OK即可
3、测试
然后在eclipse中,输入nextLine,然后快速生成代码即为成功!!!
以此同理,可以自行创建nextInt,nextDouble,nextLong等模板