2018-05-09 第三天

简介: 一、数据类型   所有写的 java 的源代码 都要复合 java 编译器的规范要能够让编译器理解编译通过。   1在编写源代码的时候需要告诉编译器我申请的内存的名字还有内存中数据的类型。 java是一种强类型语言。
一、数据类型

 

所有写的 java 的源代码 都要复合 java 编译器的规范,要能够让编译器理解编译通过。

 

1:在编写源代码的时候,需要告诉编译器,我申请的内存的名字,还有内存中数据的类型。

java是一种强类型语言。

 

2:java 语言中,支持的数据的类型。

表达某些数据的时候,可以使用那些类型来表示。

java中规定一块内存区域只能保存一种类型的数据。

 

3:java 支持的数据类型

2大类:

1:基本数据类型、简单数据类型、java内置类型。

2:引用数据类型、复合数据类型、复杂数据类型。

 

4:java 支持的基本数据类型有哪些?8种。

1:4种整数类型

    1:字节型 byte 占用1byte的内存空间。数据范围[-128~127][-2^7 ~ 2^7-1]  256

    2: 短整型 short  占用 2 bytes  数据表示的范围 [-2^15 ~ 2^15-1]  65536

    3: 整型  int  占用 4 bytes  数据表示的范围 [-2^31 ~ 2^31-1]

    4:长整型  long 占用 8个字节 数据表示的范围 [-2^63 ~ 2^63-1]

2:2个浮点数

    1:单精度类型  float  占用4bytes 小数点后可以有7个小数位左右。

    2:双精度  double  占用8bytes 小数点后可以保留15位小数左右。

 

3:字符类型  char  2bytes

4:布尔类型  boolean  官方没有给出具体占用空间的大小??  只有两个值  true  和  false。只使用了一个二进制位来表示这两种状态。1-->true  0---false.

 

数据类型的作用:1:决定了数据占用内存空间的大小。2:底层二进制存储的格式。

 

定义指定类型的标识符并存储指定的数据的通用格式:

数据类型 标识符 = 某一个值;

 

例子:通过什么样的方式,去申请一块内存空间,去保存一个年龄的整数。并把数打印输出到cmd 窗口。

public class TestType{

public static void main(String[] args){

//先向 jvm 申请一块内存并起一个名字,然后再将数据放到该内存中。

//申请内存的必须告诉编译器申请多大

//向jvm 申请一块内存区域,申请的区域的数据类型为int,该内存的标识符名字是 age,然后将10这个数放到该内存中。

int age = 19;

//使用byte 存储一个 分数

byte score = 99;

//使用short 存储一个 学校的人数

short studentCount = 520;

//使用long 存储一个世界人口的数量

long worldPersonCount = 74_0000_0000L;

//float 表示圆周率

float pi = 3.141592653F;

double pi1 = 3.141592653222222222222222222222222;

//0.1 0.5 0.01  0.3

//char 存储一个字符 A

//单引号中放置一个字符,双引号中放置若干个字符。

char charA = 'A';

//用boolean 表示班里是否有女孩子

boolean isGirlInClass = true;

//+ 可以是先 字符串 和 任意类型的数据连接,连接之后生成一个新的字符串,将新的字符串打印输出。

System.out.println("age = " + age +";");

System.out.println("score = " + score + ';');

System.out.println("studentCount = " + studentCount);

System.out.println("worldPersonCount = " + worldPersonCount);

System.out.println("pi = " + pi);

System.out.println("pi1 = " + pi1);

System.out.println("charA = " + charA);

System.out.println("isGirlInClass = " + isGirlInClass);

}

}

 

 

二、变量

 

声明变量:数据类型  变量名;

 

赋初值:变量名 = 初始值;

 

所以,定义变量就是 声明 + 赋值的过程。

 

 

//使用变量

public class TestVariable{

public static void main(String[] args){

//定义一个int 类型的变量  保存一个100;

int value = 100;

//获得变量的值  get

System.out.println("value = " + value);

//修改变量的值 set

value = 99;

//获得变量的值  get

System.out.println("value = " + value);

//定义变量的其他的语法形式。

//声明变量  声明的变量不能访问,如果只是声明变量,那么jvm 不会给 变量分配内存。

//如果一个变量可以被访问,那么必须保证 被访问的时候已经被分配了内存。

int age;

//赋初值

age = 19;

System.out.println("age = " + age);

int num1 = 10,num2 = 20, num3 = 30;

int value1 = 10,value2,value3 = 50,value4;

value2 = 19;

System.out.println("value2 = " + value2);

//System.out.println("value4 = " + value4);

}

}

作用域:

概念:局部变量的作用域:局部变量可以被访问的范围。

局部变量的作用域:从定义的位置开始,到变量所在的大括号的结尾处内。

 

三、 常量

  java 中的常量 分为两种:

1:字面常量、字面值。  12, 1.2,'A',"123",true,false.

2:不可变的变量。final + 数据类型 + 变量名 = 常量;

如:不可变的变量:

int maxYearDayCount = 366;

如何将一个变量变成不可变的量:

final int maxYearDayCount = 366;

final 修饰的变量称之为 终态变量。只能初始化一次。

 

 

java 中所有的数据都是要有类型的,可以显式的指定数据的类型。

字面值 是被编译器 隐式指定数据类型。

 

隐式指定数据类型的规则:

如果是整数 类型为int。

如果一个字面整数的值超过了int 的范围,那么必须告诉编译器 申请8个字节的空间去存储它。通过在常量的末尾添加 字符  l  or  L  建议使用 L

 

如果是浮点数,那么默认类型 double。占用8个字节。

肯定不能将八个字节的数据赋值给4个字节的内存空间。可能会有精度的损失。不安全。

需要在浮点数常量值的末尾添加 F or f 。来申请四个字节的空间存储。

 

//final 练习

//求一个 球 的体积。半径通过键盘输入获得。

import java.util.Scanner;

//默认导入的核心包 下所有的类 * 通配符,代表所有的

//import java.lang.*;

public class TestFinal{

public static void main(String[] args){

//创建一个扫描器对象  用来接收键盘输入的。System.in  代表键盘 标准输入设备

//需要告诉编译器  Scanner 来自于哪里

Scanner scanner = new Scanner(System.in);

//提高用户体验  User Expression UE

System.out.println("请您输入球体的半径:");

//定义变量保存一个球体的半径

//让扫描器对象使用自己接收键盘输入的功能去接收一个数据。接收下一个输入的整数,输入完毕回车接收。

//将接收的结果赋值给 半径变量。

//nextInt() 是 扫描器 对象的功能。方法。用来接收键盘的一个整数。

//阻塞式方法。可以让程序停下来,如果想让程序继续执行,解除阻塞才可以。

int radius = scanner.nextInt();

//定义变量 来保存 球体的体积

double volume = 0;

//定义变量来保存 圆周率的 值,如果圆周率的精确度需要调整,

//通过将 PI 定义成 终态变量,来保证代码的安全性。

final double PI = 3.141593;

//计算体积公式

volume = PI * 4 / 3 * radius * radius * radius;

System.out.println("半径为:"+ radius + " 球的体积为 = "+volume);

}

}

 

四、 转义字符

  char 类型:

占用 2 bytes 。

可以当作整数来看来。[0-65535] 无符号短整型。没有负数。

 

美国的字符集 ASCII

 

0 字符对应的整数  48

A --->65

a ---> 97

 

转义字符:

\t   对应着键盘上的Tab 键   可以表示[1-8]个半角位   \t输出的位置必须保证前面输出的所有的内容要求是8的倍数的半角位,不够8的倍数,补齐8的倍数,够了,自己就独自占8个。

\b   对应着键盘上的Backspace 键 退格键。

\f   换页符

\r   回车符   让光标回到当前行的行首。

\n   换行符   让光标去到下一行

 

注意:键盘上的回车键 对应了2个字符  \r\n

回车键:去到下一行的行首。

 

\': 单引号 字符

\":双引号 字符

\\: 反斜杠 字符

 

打印一个字消耗的时间是0.1s,每次换行 需要消耗0.2s 每次换行 都会丢俩字符。

后来就在需要换行的地方 添加两个空白字符 \r\n。

 

1:读取到了 97  去本地字符集 gbk 去查找 97 对应的字符 a  ,再去unicode 字符集中 将 a 的字符对应的整数替换过来。

 

//char 类型 练习

public class TestChar{

public static void main(String[] args){

//定义char 类型的变量

char c1 = 'A';

//就是每一个字符都对应这个一个唯一的整数 这个整数在[0-65535]

char c2 = 66;

System.out.println(c1);

System.out.println(c2);

//使用转义字符的方式去表示字符  

//java 使用字符集是 Unicode 字符集

//使用4个16进制位来表示16bits

//转义序列

char c3 = '\u0043';

System.out.println(c3);

//字符集中的某些具有特殊意义的字符没有办法使用一个符号来表示,所以使用一种转义字符的方式来表示。

//System.out.println("\t123456789");

//System.out.println("123456789");

//System.out.println("1\t23456789");

System.out.println("1234567\n89");

char c4 = '\'';//单引号 字符

char c5 = '\"';//双引号 字符

char c6 = '\\';//反斜杠 字符

}

}

 

五、 生成随机数

//获得指定区间[10~51) 2个 随机数 value1,value2.并打印value1 和 value2 的值。

//然后实现功能,将value1 和 value2 的值互换。并再次打印。

public class TestRandom{

public static void main(String[] args){

//以后一旦涉及到区间范围,包含小的,不包含大的。

//使用终态变量替代字面常量:尽量少的使用字面常量

//先定义随机区间的范围[10~51)

final int MIN = 10,MAX = 12;

//Math.random() 可以得到一个随机数[0.0~1.0)随机的double 值。

//保存最终随机值的变量

int ran = 0;

//Math.random()*(MAX-MIN);[0.0~41.0)

//Math.random()*(MAX-MIN)+MIN;[10.0~51.0)

ran = (int)(Math.random() * ( MAX - MIN ) + MIN);

System.out.println("ran = " + ran);

}

}

 

//生成随机数 并 交换位置

//获得指定区间[10~51) 2个 随机数 value1,value2.并打印value1 和 value2 的值。

//然后实现功能,将value1 和 value2 的值互换。并再次打印。

public class ChangeValue{

public static void main(String[] args){

//定义取值区间

final int MIN = 10,MAX = 51;

 

//求两个随机值

int num1 = (int)(Math.random()*(MAX-MIN)+MIN);

int num2 = (int)(Math.random()*(MAX-MIN)+MIN);

//打印两个随机值

System.out.println("交换之前的随机值为:num1 = " + num1 + "\tnum2 = " + num2);

//交换变量的值

int temp = num1;//备份num1

num1 = num2;

num2 = temp;

//打印交换后的值

System.out.println("交换之后的随机值为:num1 = " + num1 + "\tnum2 = " + num2);

}

}

 

 

 316b531d9415e44320c6a978f1b95dbdac0f143b

 

 

 

目录
相关文章
|
7月前
60天力扣打卡(第三天)
60天力扣打卡(第三天)
|
弹性计算 负载均衡 数据安全/隐私保护
第三天学习笔记
ECS+ SLB 负载均衡实践
|
Linux 虚拟化 数据中心
|
人工智能 文字识别 前端开发
第二天笔记
阿里云视觉训练-第二天
|
XML JSON 前端开发
第三天
电子相册搭建
第四天
自己的数据库和网站
351 0
第四天
|
计算机视觉
|
弹性计算 Linux 应用服务中间件
打卡第二天
加入7天训练营是全新的体验,再接再厉!
289 0