Java
编译与解释并存的语言
数据类型*
基本要素
- 数据的性质(数据结构)
- 数据的取值范围(字节大小)
- 数据的存贮方式
- 参与的运算
变量的的属性
- 名字
- 类型
- 值(使用前必须确定下来)
- 地址
分类
基本数据类型:由程序设计语言系统所定义、不可再划分的数据类型。所占内存大小是固定的。在内存中存放的数据值本身。
(一个字节有8位)
- 整型:byte short int long
- 浮点型:float(单精度浮点 f/F) double(双精度浮点 默认)
- 逻辑型/布尔型:boolean (只有true”真“和false”假“两个取值) 默认为false
- 字符型 : char ‘ ’
用来存储单个字符 (有且仅有一个,即为空也会出现错误)
在内存占2个字节 采取Unicode编码(ASCII码(256字符)+GB2312国标码(汉字))
字符型数据可以转换为整型(因为它的编码值是整数)
默认值:‘\u0000’
Unicode字符采用\u0000----\uFFFF之间的十六进制表示
Unicode字符表的前128个刚好是ASCII表
引用数据类型(复合数据类型):在内存存放是指向该数据的地址,不是数据值的本身
例如: 类 数组 接口
关键字与标识符
关键字/保留字
标识符命名规则:
- 由字母、数字、下划线、美元符号$组合而成
- 必须以字母、下划线或美元符号开头,不能以数字开头
- 关键字不能当标识符使用
- 区分大小写
编码习惯:类名首字母大写,变量、方法及对象首字母小写
常量与变量
常量 :
整型常量(八进制、十六进制、十进制长整型后需要加I或者L)、浮点型常量(单精度加F或者f,双精度加D或者d或者省略)、布尔型常量、字符型常量(单引号)、字符串型常量(双引号)
常量的声明:final
final int a = 10;
变量:
变量的声明、初始化、赋值
java语言的可以随时定义变量,不必集中在执行语句前
int i , j = 10; // i还未赋值,j已初始化赋值
i = 2; // i 初始化
float f ; //同样。f并未赋值初始化
f = 3.6f ;
数据类型的转换**
数值型不同类型数据的转换
-
自动类型转换 (安全的转换)
1. 转换前的数据类型与转换后的数据类型兼容(从数据范围小→数据范围大的 )
2. 转换后的数据类型的表示范围比转换前的类型大
第2点同时说明:不同的数据类型在进行运算的式,需要转换为同一类型的再进行运算。
(byte ->short -> char -> int -> long -> float -> double) -
强制类型转换 (不安全的转换)
将较长的数据类型转换成较短的数据,且强制类型转换无四舍五入
格式:(欲转换的数据类型)变量名
(int) 4.6 = 4,
//数据类型的自动转换
public class DataType_Conversion {
public static void main(String[] args) {
int a = 155;
float b =21.0f;
System.out.println("a/b="+(a/b)); //a是整型,b是浮点型,两者相处,结果为浮点型a/b=7.3809524
}
}
//整型与浮点型的转换
int a = 155;
int b = 9;
float g,h,k;
g = a/b;//a、b都是整型,两者相除的结果为整型,g为浮点型,所以得出的结果再次转换为浮点型,是安全的转换 1、g=a/b 2、(flaot)(g)
System.out.println("a/b="+g);//a/b=17.0
h = (float)a/b; //1. (float)a 2.a/b 显示结果(float)a/b = 17.222221
k = (float)(a/b); //1.a/b 2.flaot(a/b) 显示结果 (flaot)(a/b) = 17.0
System.out.println("(int)h="+(int)h); // 显示结果(int)h=17
字符串型数据与数值型数据相互转换
- 字符串转换成数值型数据
"3.2" != 3.2
前面一个为字符串 ,后面为int型。两者的Unicode编码也不同。
String str = "123.45";
float f = Float.parseFloat(str);
把()里面的String变量型转换为float型。
|转换方法 |功能说明 |
|–Byte.parseByte(String s)|将数字字符串转换为字节型数据–|
|–Short.parseShort(String s) | 将数字字符串转换为字节型数据-- |
|–Integer .parseInt(String s)| 将数字字符串转换为字节型数据–|
|–Float.parseFlaot(String s)|将数字字符串转换为浮点型数据–|
|–Double.parseDouble(String s)|将数字字符串转换为双精度型数据–|
|–Boolean.parseBoolean(String s)|将数字字符串转换为布尔型数据–|
-数值型数据转换为字符串
字符串可以用“+”来实现连接操作
原理:与字符串相加时,如果某个操作数不是字符串,就会将自动转换为字符串,在进行相加的操作。
int a =1234;
String str =""+a; //将整型数据转换成了字符串
由键盘输入数据
由键盘输入的数据,Java都视为字符串。,因此由键盘输入数字需经过转换。
- 输入流(Java与输入流输出流有关的都要做异常处理机制)
输入数据的格式是基本固定的,可以改变是变量名,如inp
第一种
import java.io.*;
public class class_name //类名称
{
public static void main(String[] args) throws IOException //凡是输入流与输出流都做异常处理机制
{
......
String str;
InputStreamReader inp; //创建InputStreamReader的对象 输入流
inp =new InputStreamReader(System.in); //用new的方式给inp分配内存
BufferedReader buf; //创建BufferedReader的对象 输入流
buf = new ButfferedReader(inp); //表示buf的值来自inp
......
str = buf.readLine();//从缓冲区读取数据(读取一行字符串)
char c = (char)buf.read(); //从缓冲区读取一个字符的字符串,即可以获得一个字符
......
}
}
第二种
较第一种相比,节省一个变量
package cho3_language;
//从键盘输入数据
import java.io.*;
public class Input_1 {
public static void main(String[] args)throws IOException {
BufferedReader buf; //创建BufferedReader的对象 输入流
String str;//用来接收输入的字符串
char ch;//用来接收一个字符
buf = new BufferedReader(new InputStreamReader(System.in));//表示buf的值来自键盘输入
System.out.println("请输入字符串");
str = buf.readLine();//从缓冲区读取数据(读取一行字符串)
System.out.println("请输入一个字符");
ch = (char)buf.read();//从缓冲区读取一个字符的字符串,即可以获得一个字符
System.out.println("输入的字符串是"+str);
System.out.println("输入的一个字符是"+ch);
}
}
//从键盘输入数字、然后将其转换成数值型数据
float num;
String str;
BufferedReader bu;
bu = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入一个实数");
str = bu.readLine();
num = Float.parseFloat(str);
System.out.println("输入的实数是:"+num);
//显示结果
请输入一个实数
54
输入的实数是:54.0
- Scanner类
专门用于输入的类。出处 import java.util.Scanner;
//利用Scanner类从键盘出入多个数据
import java.util.Scanner;
public class Input_2 {
public static void main(String[] args) {
int num1;
double num2;
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个数据");
num1 = sc.nextInt();
System.out.println("请输入第二个数据");
num2 = sc.nextDouble();
System.out.println("第一个数是:"+num1+" 第二个数据是:"+num2);
}
}
//显示结果
请输入第一个数据
45
请输入第二个数据
64
第一个数是:45 第二个数据是:64.0
Scanner类的常用方法
nextByte() 将输入信息的下一个标记扫描为一个字节
nextInt() 将输入信息的下一个标记扫描为一个整型t
nextLong() 将输入信息的下一个标记扫描为一个Long
nextShort() 将输入信息的下一个标记扫描为一个Short
nextBoolean() 将输入信息的下一个标记扫描为一个boolean
nextDouble() 将输入信息的下一个标记扫描为一个double
nextFloat() 将输入信息的下一个标记扫描为一个float
nextLine() 返回键盘输入的一行字符串,包括空格,即返回enter前的所以字符
next() 返回键盘输入的一个字符,去掉有效字符前遇到的空格、Tab键和enter键
hasNext() 判断用户输入的是否是相对应的数据
package cho3_language;
//利用hasNextXXX()和nextXXX()方法的配合使用来完成键盘的输入
//用户在键盘上输入若干个数,每输入一个数按Enter键或者Tab键或者空格键确认,最后在键盘上输入一个i非数字字符串结束整个输入操作过程。
//计算这些数字的和
import java.util.Scanner;
public class Input_3 {
public static void main(String[] args) {
double sum = 0; //求和
int n= 0;
System.out.println("开始操作:请输入多个数,每输入一个数后按enter键或者tab键或者空格键确认,");
System.out.println("结束操作:输入一个非数字的字符");
Scanner sc = new Scanner(System.in);
while(sc.hasNextDouble()) { //判断是否为double类型 输入整型也可,因为整型可以自动转换为double类型
double s = sc.nextDouble();
sum = sum+s;
n++;//计数器
}
System.out.println("一共输入了"+n+"个数字,其和为"+sum);
}
}
运算符与表达式
(详情见下一篇)
算法运算符
关系运算符
逻辑运算符
位运算符
赋值运算符
条件运算符
分量运算符