1.数据类型–浮点型
1. 浮点数导致的误差
package example;
public class Floattest {
public static void main(String[] args) {
// TODO Auto-generated method stub
float f = 0.00f; //声明一个浮点数
System.out.println(f); //输出
for(int i = 0;i < 10; i++) //for循环
{
f +=0.01f; //f值递增0.01
System.out.println(f); //f值输出
}
}
}
2.变量与常量
1. 常量
使用final来表示一个常量。
以下的例子时输入一个圆的半径,可以计算出圆的面积,并输出
//FinalExample.java final关键字展示
package example;
import java.lang.Math;
public class FinalExample {
public static void main(String args[])
{
final double PI = 3.1415926; //声明一个浮点型常量
System.out.println("圆周率="+PI); //输出
String str = args[0]; //获得main方法的参数
System.out.println("圆的半径="+str); //输出字符串str
double radius = Double.parseDouble(str); //转换为double类型变量
double area = PI*radius*radius; //计算圆的面积
System.out.println("圆面积="+area); //输出
}
}
执行方式:先指定一个圆的半径
Run As | Run Configurations |Arguments|Program Arguments | Apply | Run
3.类型转换
1.数据类型之间自动转换
//DateChange.java 描述:数据类型转换
package example;
public class DateChange{
public static void main(String[] args) {
int i = 333666999; //声明一个整形变量
System.out.println("int i = " + i); //输出整形变量i
double d = i; //声明一个双精度变量d,并将i的值赋值给d
System.out.println("double d = "+ d); //输出双精度型变量
float f = i; //声明一个浮点型变量f,并将i的值赋值给f
System.out.println("float f =" + f); //输出浮点型变量f
}
}
2.强制类型转换
//TypeTransform.java 自动类型转换和强制类型转换
package example;
public class TypeTransform {
public static void main(String[] args) {
byte b = 50;
char c = 'G';
short s= 12345;
int i = 11;
long l = 10000L;
float f = 3.14159F;
double d = 3.1415926;
//低类型到高类型的自动转换
System.out.println("累加byte等于:"+b);
System.out.println("累加char等于:" +(b+c));
System.out.println("累加short等于:"+(b+c+s));
System.out.println("累加int等于:"+(b+c+s+i));
System.out.println("累加long等于:"+(b+c+s+i+l));
System.out.println("累加float等于:"+(b+c+s+i+l+f));
System.out.println("累加double等于:"+(b+c+s+i+l+f+d));
//高类型到低类型的强制转换
System.out.println("把long类型转换为int:"+(int)l);
//高类型到低类型的转换会丢失数据
System.out.println("把int类型强制转换为short:"+ (short)l);
//实数到整数的转换会丢失小数部分
System.out.println("把double类型强制转换为int:"+(int)d);
//z整数到字符型的转换将获取对应编码的字符
System.out.println("把short类型强制转换为char:"+(char)s);
}
}
4.运算符
1.逻辑运算符
实现获取三个数中的最大数字
package example;
public class LogicOperator {
public static void main(String[] args) {
int a,b,c,temp;
a = Integer.parseInt(args[0]);
b = Integer.parseInt(args[1]);
c = Integer.parseInt(args[2]);
if(a>b&&a>=c)
{
temp = a;
}else if(!(b<a)&&!(b<c))
{
temp = b;
}
else
{
temp = c;
}
System.out.println("Max="+temp);
}
}
2.自动递增和递减
自增、自减运算符
//AutoInc 描述:自增、自减运算符的使用
package example;
public class AutoInc {
public static void main(String[] args) {
int i = 1; //声明一个整形变量
prt("i : "+i); //输出整数i
prt("++i : " + ++i);//进行++i运算并输出
prt("i++ : " + i++);//进行i++运算并输出
prt("i : " + i); //输出整数i
prt("--i : "+ --i); //进行--i运算并输出
prt("i-- : "+ i--); //进行i--运算并输出
prt("i : " + i); //输出i
}
//声明prt方法
static void prt(String s) {
System.out.println(s); //输出字符串s
}
}
3.三元运算符
package example;
public class Ternary {
public static void main(String[] args) {
System.out.println("三元运算符与if-else比较");
System.out.println(TernaryMax(5,4)); //输出较大数
System.out.println(ifElseMax(7,9)); //输出较大数
}
static int TernaryMax(int a,int b) {
return a>b?a:b; //比较两个数的大小
}
static int ifElseMax(int a,int b) {
if(a>b) return a; //当a大于b时,返回a
else return b; //当a不大于b时,返回b
}
}
5.拓展
1.不借助第三者实现两个变量的互换
使用第三个变量需要在内存里面重新开辟一个空间,增加了内训的消耗
使用 ^ (异或)
//ExchangeVariable 描述:不使用临时变量实现内容互换
package example;
import java.util.Scanner;
public class ExchangeVariable {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); //创建扫描器,用来接受数值
System.out.println("请输入变量A的值"); //接收第一个变量值
long A = scanner.nextLong();
System.out.println("请输入变量B的值"); //接收第二个变量值
long B = scanner.nextLong();
System.out.print("A="+ A +"\tB=" + B);
System.out.print("\t执行变量互换...\t");
A = A^B;
B = B^A;
A = A^B;
System.out.println("A="+A + "\tB=" +B);
scanner.close(); //释放scanner资源
}
}
2.获取浮点数的最大/最小值
//FloatDouble.java 描述:输出浮点数最大值、最小值
package example;
public class FloatDouble {
public static void main(String[] args) {
float float_max = java.lang.Float.MAX_VALUE; //声明float类型变量,赋系统最大值
float float_min = java.lang.Float.MIN_VALUE; //声明float类型变量,赋系统最小值
double double_max = java.lang.Double.MAX_VALUE; //声明double类型变量,赋系统最大值
double double_min = java.lang.Double.MIN_VALUE; //声明double类型变量,赋系统最小值
//输出变量
System.out.println("单精度浮点数的最大值为:" + float_max);
System.out.println("单精度浮点数最小值为:" + float_min);
System.out.println("双精度浮点数的最大值为: " + double_max );
System.out.println("双精度浮点数的最小值为:" + double_min);
}
}
3.实现字母的大小写转换
package example;
import java.util.Scanner;
public class CaseChange {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("请输入您要进行转换的字母");
char c = in.next().charAt(0);
if(c>='A' && c <='Z') {
c+=32;
System.out.println("这里的大写" + (char)(c-32)+"被转换成了"+c);
}else if(c>='a'&&c<='z') {
c-=32;
System.out.println("这里的小写"+(char)(c+32)+"被转换成了"+c);
}else {
System.out.println("不带这种格式的输入返回重新输入");
}
in.close();
}
}
4.实现输入字符的加密和解密
要点:异或运算
package example;
import java.util.Scanner;
public class Encryption {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);//创建system类的标准输入流的扫描对象
System.out.println("请输入一个英文字符串或解密字符串");
String password = scanner.nextLine(); //获得用户输入
char[] array = password.toCharArray(); //获得字符数组
for(int i = 0;i<array.length;i++) { //遍历字符数组
array[i] = (char)(array[i]^20000); //对每个数组元素进行异或运算
}
System.out.println(new String(array)); //输出密钥
scanner.close(); //释放scanner资源
}
}
6.技术解惑
-
1.三元运算符与 if - else 语句的不同之处
两者都可以实现条件选择。三元运算符只需要写一行代码,代码较为简洁,但是初学者不易理解。
if - else 语句代码书写较多。理解起来更加自然。比三元运算符更加明确。 -
2.强制类型转换规则
程序需要从高级向低级转换数据类型时,必须实施强制类型转换
转换的类型之间必须有某种特定的联系。例如字符串“123”向数字123的转换
不能在boolean与任何类型之间进行强制类型转换。