JAVA基础之三
上一篇 / 下一篇 2013-10-10 21:31:46 / 个人分类:JavaSE
复习:
一、Java开发过程
编辑 -> 编译 -> 运行
1、最基本工具
1)编辑 纯文本编辑器 EditPlus 记事本
Hello.java package day01;
2)cmd 控制台 编译
javac -d . Hello.java -> day01\Hello.class
3)cmd 控制台 运行
java day01.Hello
2、使用IDE 集成开发环境 MyEclipse 8.5
1)编辑 直接创建一个class 进行编辑
2)保存源文件立即编译 如果编译出错 出现红色提示
3)运行 右击源程序 Run As -> Java Application
前提:必须有主方法
public static void main(String[] args){
}
二、Java的注释
作为代码的解释说明文档,不作为代码的有效内容
但依然重要.
1、单行注释 //
2、多行注释 /* */
3、文档注释 /** */
三、Java标识符 idenfiers
作为代码中的组成部分,由用户定义:
包名、类名、变量名、方法名、常量名等...
java.lang String name main PI
1、标识符的规则 5条 必须遵守
1)字母、数字、_、$组成 首字母不能数字
2)不能是Java关键字 50个 + 3个字面值
关键字全部小写 true false null
3)区分大小写,大小写敏感
4)长度没有限制
5)支持中文,但不推荐使用
2、标识符的规范 5条 建议遵守 业内编码习惯
1)类名、接口名 每个单词首字母大写 MyFirstJava
2)变量名、方法名第一单词首字母小写,之后的每个单词首字母大写 myFirstName playGeme()
3)包名全部小写 使用.分隔
package com.tarena.javase.day01;
4)常量全部大写 使用_分隔
public static final int MAX_VALUE = 127;
5)见名知意
ArrayIndexOutOfBoundsException
数组下标越界异常
四、关键字 keywords 由JDK设计好的
JDK5.0后 50个 特点:全部小写字母
class package int byte import ...if else for ...
保留字:goto const JDK目前也不用
另外有三个字面值(不属于关键字):
true false null
真 假 空
五、Java的数据类型
1、Java如何表示数 —— 二进制数的补码形式
使用最高位作为符号位,0表示正数,1表示负数
正数的补码:原码
负数的补码:正数的原码 按位取反 + 1
8位二进制数: byte
最大值 01111111 127
00000000 0
11111111 -1
最小值 10000000 -128
32位二进制数:int
最大值 01111111 11111111 11111111 11111111
2147483647
00000000 00000000 00000000 00000000
0
11111111 11111111 11111111 11111111
-1
最小值 10000000 00000000 00000000 00000000
-2147483648
2、Java数据类型的特点
Java是一种强类型的语言,对数据类型比较重视
String name = "Tom";
name = "James"; 可以 类型匹配
name = 23; 不可以 int和String类型不匹配
第一次声明变量必须明确指定数据类型。
3、Java数据类型分类
(1)基本数据类型 8种
也称为:简单类型、原生类型 prime
byte short int long char float double boolean
1 2 4 8 2 4 8 1
(2)引用数据类型 无数种
也称为:复杂类型,对象类型
使用 引用变量 —> 内存对象
(对象的内存地址)
按照形式分5种:
类 接口 数组 枚举 标注
class interface int[]
(3)void类型
作业:员工信息的输入和输出
使用java.util.Scanner类 扫描器类 从控制台输入数据
基本思路:
1.创建扫描器对象sc
Scanner sc = new Scanner(System.in);
2.提示并输入员工的信息
String name 名字 sc.next() sc.nextLine()
int age 年龄 sc.nextInt();
double salary 薪水 sc.nextDouble();
3.输出员工的信息
System.out.println(...);
在day03.homework包中创建类TestEmpScanner
红色下划波浪线 编译错误
黄色下划波浪线 警告 不是错误 不影响
The local variable name is never read
这个 局部 变量 name 从来没有使用过
一、Java数据类型
1、基本数据类型 8种
也称为:简单类型、原生类型 prime
byte short int long char float double boolean
1 2 4 8 2 4 8 1
(1)byte 字节型 1Byte=8bit 一共2^8=256种
表数范围:-128~127 -2^7 ~ 2^7-1
(2)short 短整型 2Byte=16bit 一共2^16=65536种
表数范围:-32768~32767 -2^15 ~ 2^15-1
(3)int 整型 4Byte=32bit 一共2^32种
表数范围:-2^31 ~ 2^31-1
-2147483648 ~ 2147483647
大约:正负21亿多
(4)long 长整型 8Byte=64bit 一共2^64种
表数范围:-2^63 ~ 2^63-1
在day03包下创建TestPrime.java程序
需求:修每公里地铁5亿,向银行贷款 每个月借5亿
500000000
一共借5个月,问共贷了多少钱?
在day03包下,创建TestInt.java程序
byte最大值:127
0111 1111 + 1
1000 0000 -128
int最大值:2147483647 + 1 -> -2147483648
01111111 11111111 11111111 11111111 + 1
10000000 00000000 00000000 00000000 -最大值
原因:类型选取不合适 25亿超过int的范围
可以使用long类型
(5)char 字符型 2Byte=16bit 2^16=65536种
既是字符,又是数字
表数范围:0~65535 0~2^16-1
使用每个数字对应一个字符 比如'A' '$' '中'
字符使用单引号 表示任何一个字符
字符编码的发展:
美国 ASCII编码 1Byte 7bit 只能表示0~127 128种
十进制数 十六进制数 字符
48 0x30 '0'
65 0x41 'A'
97 0x61 'a'
98 0x62 'b'
西欧 ISO-8859-1 也称为latin-1编码
1Byte 8bit 能表0~255 256种
0~127和ASCII完全兼容 向下兼容
128以后可以定义自己的字符 扩充了
中国 GBK 2Byte 65536种 足够了
'中' '国' 'A' 'a' 统一使用2Byte
UTF-8 目前比较流行的编码
1Byte 保存英文 比较节约空间
3Byte 保存中文等字符
UTF-8属于Unicode编码的一种
Java的字符编码:Unicode编码 2byte=16bit
使用数字 对应 字符
65 'A'
0x41
可以使用Unicode表达法表示: '\u四位十六进制编码'
十六位二进制数 使用 4 位十六进制数表示
'\u0030' '0'
'\u0041' 'A'
'\u0061' 'a'
'\u4e2d' '中'
'\u56fd' '国'
JDK提供了工具可以将中文汉字转化为unicode编码
使用jdk\bin\目录 native2ascii.exe命令
在D:\创建 1.txt 编辑:中国 保存
控制台D:\> native2ascii 1.txt 2.txt
在D:\会生成一个2.txt文件 就是其unicode编码
float和double都是有精度误差的,无法完全精确保存浮点数,double误差比float小。平时一般使用double类型。
(6)float 单精度浮点型 4Byte=32bit
使用3Byte保存数据 1Byte保存位权
科学计数法:2.0E17 2.0 * 10^17
数据:2
位权:17
数据 位权 -128~127
00000000 00000000 00000010 00010001
2 17
(7)double 双精度浮点型 8Byte=64bit
使用6Byte保存数据 2Byte保存位权
Type mismatch: cannot convert from double to float
类型不匹配: 不能讲double类型转化为float
float f1 = 1.0;
结论:整数的字面值默认是int类型
小数的字面值默认是double类型
(8)boolean 布尔型 能够表示逻辑 真 / 假
只能使用两个字面值:true / false
底层只需一个bit就够了 最多仅1Byte够了
不能像C语言:使用0表示假,非0表示真 Java不允许
模拟:使用一个布尔变量 flat 表示天气的好坏
boolean flag = true; 表示好天气
flag = false; 表示坏天气
如果是好天气,出去玩;如果天气不好,继续学习
if(flag){ 如果为真
出去玩
}else{ 否则,如果为假
继续学习
}
基本类型的底层如何存储?
使用基本的固定字节、二进制数来保存数据
能够精确存储数据:byte, short, int, long, char
不能够精确存储数据:float, double
2、引用数据类型 无数种
也称为:复杂类型、对象类型
存储方式: 引用变量 指向-> 内存对象
(对象的内存地址)
按照表现形式分为5类:
类 接口 数组 枚举 标注
class interface String[]
应用JDK已经设计好的引用类型: class
java.lang.System 系统类
java.lang.String 字符串类
java.lang.Integer int类型的包装类
java.lang.Long logn类型的包装类
java.util.Scanner 扫描器类
java.math.BigInteger 大整数类
需求:求出9的99次方 要求得到精确的值
使用long能否保存?不能使用基本类型
可以使用引用类型 java.math.BigInteger 大整数类
能够精确保存很大的整数 内存有多大,就可有多大
在day03包下创建TestBigInteger.java程序
29512665430652752148753480226197736314359272517043832886063884637676943433478020332709411004889
int最大值:2147483647 十进制数
0x7fffffff 十六进制
二进制:
01111111 11111111 11111111 11111111
long最大值:9223372036854775807
计算机基本硬件结构:
磁盘 内存 CPU
保存文件、程序 进程 指令
Hello.class JVM进程
JVM内存结构分布:
1)Stack 栈区 局部变量 (在方法中定义的变量)
栈就是一种“先进后出”FILO的数据结构
2)Heap 堆区 分配空间,创建对象
3)Code 方法区 类的信息,静态资源
之前一直使用JDK提供的引用类型,比如String类
之后自己定义引用类型:class 类
设计一个学生类 其对象可以表示学生的信息以及功能
学生类Student是对各种具体学生对象的一种抽象
对象是类一种具体实例
类名:day03.Student
学生类:
有什么? (属性)
姓名 String name;
年龄 int age;
会什么? (方法) 学习
方法的三要素:
方法名:study
参数表:(String course) 表示课程的名称
返回值类型:void 表示无返回值类型
一、Java开发过程
编辑 -> 编译 -> 运行
1、最基本工具
1)编辑 纯文本编辑器 EditPlus 记事本
Hello.java package day01;
2)cmd 控制台 编译
javac -d . Hello.java -> day01\Hello.class
3)cmd 控制台 运行
java day01.Hello
2、使用IDE 集成开发环境 MyEclipse 8.5
1)编辑 直接创建一个class 进行编辑
2)保存源文件立即编译 如果编译出错 出现红色提示
3)运行 右击源程序 Run As -> Java Application
前提:必须有主方法
public static void main(String[] args){
}
二、Java的注释
作为代码的解释说明文档,不作为代码的有效内容
但依然重要.
1、单行注释 //
2、多行注释 /* */
3、文档注释 /** */
三、Java标识符 idenfiers
作为代码中的组成部分,由用户定义:
包名、类名、变量名、方法名、常量名等...
java.lang String name main PI
1、标识符的规则 5条 必须遵守
1)字母、数字、_、$组成 首字母不能数字
2)不能是Java关键字 50个 + 3个字面值
关键字全部小写 true false null
3)区分大小写,大小写敏感
4)长度没有限制
5)支持中文,但不推荐使用
2、标识符的规范 5条 建议遵守 业内编码习惯
1)类名、接口名 每个单词首字母大写 MyFirstJava
2)变量名、方法名第一单词首字母小写,之后的每个单词首字母大写 myFirstName playGeme()
3)包名全部小写 使用.分隔
package com.tarena.javase.day01;
4)常量全部大写 使用_分隔
public static final int MAX_VALUE = 127;
5)见名知意
ArrayIndexOutOfBoundsException
数组下标越界异常
四、关键字 keywords 由JDK设计好的
JDK5.0后 50个 特点:全部小写字母
class package int byte import ...if else for ...
保留字:goto const JDK目前也不用
另外有三个字面值(不属于关键字):
true false null
真 假 空
五、Java的数据类型
1、Java如何表示数 —— 二进制数的补码形式
使用最高位作为符号位,0表示正数,1表示负数
正数的补码:原码
负数的补码:正数的原码 按位取反 + 1
8位二进制数: byte
最大值 01111111 127
00000000 0
11111111 -1
最小值 10000000 -128
32位二进制数:int
最大值 01111111 11111111 11111111 11111111
2147483647
00000000 00000000 00000000 00000000
0
11111111 11111111 11111111 11111111
-1
最小值 10000000 00000000 00000000 00000000
-2147483648
2、Java数据类型的特点
Java是一种强类型的语言,对数据类型比较重视
String name = "Tom";
name = "James"; 可以 类型匹配
name = 23; 不可以 int和String类型不匹配
第一次声明变量必须明确指定数据类型。
3、Java数据类型分类
(1)基本数据类型 8种
也称为:简单类型、原生类型 prime
byte short int long char float double boolean
1 2 4 8 2 4 8 1
(2)引用数据类型 无数种
也称为:复杂类型,对象类型
使用 引用变量 —> 内存对象
(对象的内存地址)
按照形式分5种:
类 接口 数组 枚举 标注
class interface int[]
(3)void类型
作业:员工信息的输入和输出
使用java.util.Scanner类 扫描器类 从控制台输入数据
基本思路:
1.创建扫描器对象sc
Scanner sc = new Scanner(System.in);
2.提示并输入员工的信息
String name 名字 sc.next() sc.nextLine()
int age 年龄 sc.nextInt();
double salary 薪水 sc.nextDouble();
3.输出员工的信息
System.out.println(...);
在day03.homework包中创建类TestEmpScanner
红色下划波浪线 编译错误
黄色下划波浪线 警告 不是错误 不影响
The local variable name is never read
这个 局部 变量 name 从来没有使用过
一、Java数据类型
1、基本数据类型 8种
也称为:简单类型、原生类型 prime
byte short int long char float double boolean
1 2 4 8 2 4 8 1
(1)byte 字节型 1Byte=8bit 一共2^8=256种
表数范围:-128~127 -2^7 ~ 2^7-1
(2)short 短整型 2Byte=16bit 一共2^16=65536种
表数范围:-32768~32767 -2^15 ~ 2^15-1
(3)int 整型 4Byte=32bit 一共2^32种
表数范围:-2^31 ~ 2^31-1
-2147483648 ~ 2147483647
大约:正负21亿多
(4)long 长整型 8Byte=64bit 一共2^64种
表数范围:-2^63 ~ 2^63-1
在day03包下创建TestPrime.java程序
需求:修每公里地铁5亿,向银行贷款 每个月借5亿
500000000
一共借5个月,问共贷了多少钱?
在day03包下,创建TestInt.java程序
byte最大值:127
0111 1111 + 1
1000 0000 -128
int最大值:2147483647 + 1 -> -2147483648
01111111 11111111 11111111 11111111 + 1
10000000 00000000 00000000 00000000 -最大值
原因:类型选取不合适 25亿超过int的范围
可以使用long类型
(5)char 字符型 2Byte=16bit 2^16=65536种
既是字符,又是数字
表数范围:0~65535 0~2^16-1
使用每个数字对应一个字符 比如'A' '$' '中'
字符使用单引号 表示任何一个字符
字符编码的发展:
美国 ASCII编码 1Byte 7bit 只能表示0~127 128种
十进制数 十六进制数 字符
48 0x30 '0'
65 0x41 'A'
97 0x61 'a'
98 0x62 'b'
西欧 ISO-8859-1 也称为latin-1编码
1Byte 8bit 能表0~255 256种
0~127和ASCII完全兼容 向下兼容
128以后可以定义自己的字符 扩充了
中国 GBK 2Byte 65536种 足够了
'中' '国' 'A' 'a' 统一使用2Byte
UTF-8 目前比较流行的编码
1Byte 保存英文 比较节约空间
3Byte 保存中文等字符
UTF-8属于Unicode编码的一种
Java的字符编码:Unicode编码 2byte=16bit
使用数字 对应 字符
65 'A'
0x41
可以使用Unicode表达法表示: '\u四位十六进制编码'
十六位二进制数 使用 4 位十六进制数表示
'\u0030' '0'
'\u0041' 'A'
'\u0061' 'a'
'\u4e2d' '中'
'\u56fd' '国'
JDK提供了工具可以将中文汉字转化为unicode编码
使用jdk\bin\目录 native2ascii.exe命令
在D:\创建 1.txt 编辑:中国 保存
控制台D:\> native2ascii 1.txt 2.txt
在D:\会生成一个2.txt文件 就是其unicode编码
float和double都是有精度误差的,无法完全精确保存浮点数,double误差比float小。平时一般使用double类型。
(6)float 单精度浮点型 4Byte=32bit
使用3Byte保存数据 1Byte保存位权
科学计数法:2.0E17 2.0 * 10^17
数据:2
位权:17
数据 位权 -128~127
00000000 00000000 00000010 00010001
2 17
(7)double 双精度浮点型 8Byte=64bit
使用6Byte保存数据 2Byte保存位权
Type mismatch: cannot convert from double to float
类型不匹配: 不能讲double类型转化为float
float f1 = 1.0;
结论:整数的字面值默认是int类型
小数的字面值默认是double类型
(8)boolean 布尔型 能够表示逻辑 真 / 假
只能使用两个字面值:true / false
底层只需一个bit就够了 最多仅1Byte够了
不能像C语言:使用0表示假,非0表示真 Java不允许
模拟:使用一个布尔变量 flat 表示天气的好坏
boolean flag = true; 表示好天气
flag = false; 表示坏天气
如果是好天气,出去玩;如果天气不好,继续学习
if(flag){ 如果为真
出去玩
}else{ 否则,如果为假
继续学习
}
基本类型的底层如何存储?
使用基本的固定字节、二进制数来保存数据
能够精确存储数据:byte, short, int, long, char
不能够精确存储数据:float, double
2、引用数据类型 无数种
也称为:复杂类型、对象类型
存储方式: 引用变量 指向-> 内存对象
(对象的内存地址)
按照表现形式分为5类:
类 接口 数组 枚举 标注
class interface String[]
应用JDK已经设计好的引用类型: class
java.lang.System 系统类
java.lang.String 字符串类
java.lang.Integer int类型的包装类
java.lang.Long logn类型的包装类
java.util.Scanner 扫描器类
java.math.BigInteger 大整数类
需求:求出9的99次方 要求得到精确的值
使用long能否保存?不能使用基本类型
可以使用引用类型 java.math.BigInteger 大整数类
能够精确保存很大的整数 内存有多大,就可有多大
在day03包下创建TestBigInteger.java程序
29512665430652752148753480226197736314359272517043832886063884637676943433478020332709411004889
int最大值:2147483647 十进制数
0x7fffffff 十六进制
二进制:
01111111 11111111 11111111 11111111
long最大值:9223372036854775807
计算机基本硬件结构:
磁盘 内存 CPU
保存文件、程序 进程 指令
Hello.class JVM进程
JVM内存结构分布:
1)Stack 栈区 局部变量 (在方法中定义的变量)
栈就是一种“先进后出”FILO的数据结构
2)Heap 堆区 分配空间,创建对象
3)Code 方法区 类的信息,静态资源
之前一直使用JDK提供的引用类型,比如String类
之后自己定义引用类型:class 类
设计一个学生类 其对象可以表示学生的信息以及功能
学生类Student是对各种具体学生对象的一种抽象
对象是类一种具体实例
类名:day03.Student
学生类:
有什么? (属性)
姓名 String name;
年龄 int age;
会什么? (方法) 学习
方法的三要素:
方法名:study
参数表:(String course) 表示课程的名称
返回值类型:void 表示无返回值类型
TAG: