JavaDay_02
JavaDay_02
知识框架
- 进制之间的转换
- 关键字、标识符、变量、常量和简单数据类型
- 从键盘中读取数据
- 赋值运算符和位运算符
- 自增自减操作符
- 简单的Java程序
2.1 进制之间的转换
进制:是一种计数方式,常见的有:十进制 二进制 七进制 六十进制 二十四进制 三进制等等。
public class Demo2_0 {
public static void main(String[] args) {
//System.out.println(
System.out.println(1010);//十进制->十进制
System.out.println(0x1010);//十六进制->十进制
System.out.println(0b1010);//二进制->十进制
System.out.println(01010);//八进制->十进制
System.out.println(0x522);//程序员的情人节十六进制->十进制
}
}
程序结果:
2.2 关键字、标识符、变量、常量和简单数据类型
关键字:KeyWord 在高级编程语言里被赋予特殊含义的单词。Java语言保留使用的有50个关键字,如double、int、switch、interface、enum、new等等
标识符:用户自定义的名称 ,如变量、函数、类名、包名等。它是为了标识程序中诸如类、方法和变量的元素而采用的命名。
命名规则:
1)只能包含数字,字母,下划线_,美元符$,其中数字不能开头
2)严格区分大小写
3)必须是一个词
4)标识符可以为任意长度
起名规范:
1)变量名/函数名 小驼峰式书写规范 ,如age myAge doSomething
除第一个单词之外,其他单词首字母大写
2)类名/接口名 大驼峰式书写,如 StudentName LoveYou
所有单词首字母大写
3)常量的所有字母大写 ,单词之间加_ 区分,如MAX_VALUE MY_AGE
4)包名的所有字母小写,单词之间用. 区分,如com.baidu.www
尽量不要使用单个字母,或者没有含义的字母组合当成一个名称,如a、b、c等等
变量:变量用于表示在程序中可能被改变的值。变量用于表示特定类型的数据。为了使用变量,可以通过告诉编译器变量的名字及其可以存储的数据类型来声明该变量,变量声明告知编译器根据数据类型为变量分配合适的内存空间。变量本质就是一个内存中的临时存储空间,变量的分配是由计算机随机分配的,它的物理地址是不确定的。为了方便找到变量,会对该变量空间取名,也就是我们说的变量名。变量空间里面只能存储同一类型的数据。一个变量在使用前必须被声明和初始化。
变量内存图解:
由此引入数据类型:对数据的分类,规定变量的大小(范围)。常用的有基本数据类型和引用数据类型。
基本数据类型:整型:(1)byte代表1字节即8位,范围是-2^7至 2^7-1即-128~127
(2)short代表2字节即16位,范围是-2^15至 2^15-1即-32768~32767
(3)int(常用) 代表4字节即32位,范围是-2^31至 2^31-1
(4)long代表8字节即64位,范围是-2^63至 2^63-1
浮点型:(1)float单精度型,代表4字节
(2)double双精度型(常用) ,代表8字节
字符型:char, 两个字节,范围是1~2^16,65536
布尔型 :boolean 不确定(争论)true false
引用数据类型:字符串和数组。
double radius=5.0
double area;
area=radius*radius*3.14;
在上述代码中,radius和area是两个声明为double型的变量,其中radius还被初始化为5.0,而代码中出现的3.14为一个默认为double型的常量。
常量:是指在程序中直接出现的数据或字面量,程序中直接出现的一般为int型的且是十进制。主要有数字、布尔值、字符常量和字符串常量。
2.3 从键盘中读取数据
Java使用System.out来表示标准输出设备,而用System.in来表示标准输入设备0 馱认情况下,输出设备是显示器,而输人设备是键盘。为了完成控制台输出,只需使用 println方法就可以在控制台上显示基本值或字符串。Java并不直接支持控制台输人,但是 可以使用Scanner类创建它的对象,以读取来自 System.in的输入,如下所示Scanner input = new Scanner(System.ln) ;
语法new Scanner (System.in)表明创建了一个Scanner类型的对象。语法Scanner input 声明input是一个Scanner类型的变量。整行的Scanner input = new Scanner(System.ln) ;表明创建了一个Scanner对象,并且将它的引用值陚值给变量 input。对象可以调用它自己的方法。调用对象的方法就是让这个对象完成某个任务。可以调用nextDoubleO 方法来读取一个 double 值,如下所示double radius - input.nextDouble();
该语句从键盘读入一个数值,并且将该数值賦给 radius。
public class ScannerDemo {
public static void main(String[] args) {
//如何从控制台输入数据 Scanner类
//创建Scanner类的对象
Scanner scanner=new Scanner(System.in);
scanner.nextLine();
scanner.next();
scanner.nextInt();
scanner.nextDouble();
scanner.nextByte();
scanner.nextFloat();
scanner.nextLong();
System.out.print("请输入一个数字:");
//InputMismatchException
int number=scanner.nextInt();//程序等待用户输入
System.out.println(number);
}
}
2.4 赋值运算符和位运算符
public class OperationDemo {
public static void main(String[] args) {
/* 算数运算符 + - * / % ++ --
* 赋值运算符
* += -= /= *= %=
* 位运算符
* & | ^ << >>
* 比较运算符
* 逻辑运算符
* */
int a=3;
a+=3;//a=a+3
a=a+3;//int+int=int 就算超处范围 也会自动强制转换
byte b=3;
b+=3;//b=b+3;
// b=b+3;//byte+int=int
short s=3;
s+=3;
// s=s+3;//short+int=int
// &
int num1=10;
int num2=7;
System.out.println(num1&num2);//位与运算
/*
1010
&0111
0010->2
* */
System.out.println(num1|num2);//位或运算
/*
1010
|0111
1111->2
*/
System.out.println(num1^num2);//位异或运算
/*
1010
^0111
1101
*/
//用最有效的方式计算4*2^n
System.out.println(6<<4);//左移
// 00000000001100000 6*2^4
System.out.println(18>>2);//右移
//00000000000100 18/2^2
int c=3;//在函数中定义的变量 局部变量 调用之前 必须得初始化
System.out.println(c);
//c cannot be resolved to a variable
//The local variable c may not have been initialized
//除法 两个整数相除 结果必为整除(分母不为0)
//如果结果是小数的话 那么除数和被除数至少要有一个小数(float,double)
//在Java中 小数的运算结果都是有精度的 但是在显示的时候 会有误差
System.out.println(1-0.1-0.1-0.1-0.1-0.1);
System.out.println(1-0.5);
}
}
2.5 自增自减操作符
public class PlusPlusDemo {
public static void main(String[] args) {
//++ -- 自身+1 自身-1
//n++ ++n
//n++ 先调用后++
//++n 先++再调用
int i=3;
i++;//4
System.out.println(i);//4
System.out.println(i++);//4
//i=5
int j=i++;//j=5 i=6
System.out.println(j);//5
System.out.println(i);//6
i=i++;//i=6 i=7
System.out.println(i);//6
i=i++;
System.out.println(i);//6
/* n++ n--同理
* 1.先开辟临时存储区 将n的值赋值进去
* 2.然后n本身的值+1
* 3.最后将临时存储区的值调用出去
*
* ++n --n
* 直接n自身+或-完毕后,再调用
* */
}
}
2.6 简单的Java程序
public class Demo2_1 {
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
System.out.print("输入一个整数:");
int number=scanner.nextInt();
System.out.println(number);
}
}
public class Demo2_2 {
//显示当前时间
public static void main(String[] args){
//使用currentTimeMillis()方法获取毫秒数
long miles=System.currentTimeMillis();//使用currentTimeMillis()方法获取毫秒数
long seconds=miles/1000;
long minutes=seconds/60;
long hours=minutes/60;
System.out.print(hours%24+8+":");
System.out.print(minutes%60+":");
System.out.print(seconds%60);
}
}
import java.util.Scanner;
public class Demo2_3 {
//整钱兑零
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
System.out.print("输入钱数:");
int money=(int)(scanner.nextDouble()*100);
//获取美元,1156
int dollar=money/100;
money=money%100;//剩余56
//剩余56,除以25,求出2角5分的个数
int quarter=money/25;
money=money%25;//余6
//除以10,得出1角的个数
int dime=money/10;//求1角的个数
money=money%10;//剩余1分币的个数
int nickel=money/5;
money=money%5;
int penny=money/5;
money=money%5;
System.out.println("dollar="+dollar);
System.out.println("quarter="+quarter);
System.out.println("dime="+dime);
System.out.println("nickel="+nickel);
System.out.println("nickel="+nickel);
System.out.println("penny="+penny);
}
}
import java.util.Scanner;
public class Demo2_4 {
public static void main(String[] args){
//获取用户输入的摄氏温度
Scanner sc=new Scanner(System.in);
//提示信息
System.out.print("输入的摄氏温度:");
double celsius=sc.nextDouble();
//摄氏温度转化为华氏温度
double fahr=(9/5)*celsius+32;
//华氏温度输出
System.out.println("华氏温度为:"+fahr);
}
}
import java.util.Scanner;
public class Demo2_5 {
//全局常量
public static final double PI=3.1415926;
public static void main(String[] args){
//获取用户输入的半径和高
Scanner sc=new Scanner(System.in);
//提示用户输入半径和高
System.out.print("输入半径和高:");
double radius=sc.nextDouble();
double height=sc.nextDouble();
//计算底面积和体积
double area=radius*radius*PI;
double volumn=area*height;
System.out.println("底面积为:"+area);
System.out.println("体积为"+volumn);
}
}
import java.util.Scanner;
public class Demo2_6 {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
//提示输入信息
System.out.print("输入一个整数:");
int number=sc.nextInt();
//对数字进行分解
int a=number%10;
number=number/10;
int b=number%10;
number=number/10;
int c=number%10;
System.out.println("The sum of the digits is:"+(a+b+c));
}
}
import java.util.Scanner;
public class Demo2_9 {
public static void main(String[] args){
//获取用户输入的数据
Scanner sc=new Scanner(System.in);
//提示用户输入数据
System.out.print("Enter the amount of water in kilograms:");
double kilograms=sc.nextDouble();
System.out.print("Enter the initial temperature:");
double initial=sc.nextDouble();
System.out.print("Enter the final temperature:");
double fina=sc.nextDouble();
double energy=kilograms*(fina-initial)*4184;
System.out.println("The energy is needed:"+energy);
}
}
import java.util.Scanner;
public class Demo2_13 {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
//输入华氏温度和风速
System.out.print("Enter the temperature in Fahrenheit between -58°F and 41°F:");
double fahr=sc.nextDouble();
System.out.print("Enter the wind speed(>=2) in miles per hour:");
double speed=sc.nextDouble();
//根据公式计算室外风寒温度
double windChill=35.74+0.6215*fahr-35.75*Math.pow(speed, 0.16)+0.4275*fahr*Math.pow(speed, 0.16);
System.out.println("The wind chill index is "+windChill);
}
}