欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > > 文章正文

JAVASE,

来源: javaer 分享于  点击 33323 次 点评:58

JAVASE,


JAVASEDay02

1.标识符和关键字以及变量

关键字:关键字:KeyWord 在高级编程语言里 被赋予特殊含义的单词。
标识符::标识符是为了标识程序中诸如类、方法和变量的元素而采用的命名。
所有的标识符必须遵从以下规则:
• 标识符是由字母、数字、下划线(-) 和美元符号()线))构成的字符序列。 • 标识符必须以字母、下划线(- )或美元符号()开头,不能以数字开头。
• 标识符不能是保留字
• 标识符不能是 true、false 或 null。
• 标识符可以为任意长度
变量:变量用于表示在程序中可能被改变的值。
变量的分配是由计算机随机分配的,物理地址不确定
为了方便找到变量 所以对该变量空间取名 变量名
变量空间里面只能存储同一类型的数据 分类数据->
数据类型:数据的分类 变量的大小(范围)

变量的分配是由计算机随机分配的,物理地址不确定
为了方便找到变量 所以对该变量空间取名 变量名
变量空间里面只能存储同一类型的数据 分类数据->
数据类型:数据的分类 变量的大小(范围)
C gcc tc vc
起名规范:
1)变量名/函数名 小驼峰式书写规范 age myAge doSomething
除第一个单词之外 其他单词首字母大写
2)类名/接口名 大驼峰是书写 StudentName LoveYou
所有单词首字母大写
3)常量 所有字母大写 单词之间 加_ MAX_VALUE MY_AGE
4)包名 所有字母小写 单词之间用. com.baidu.www
尽量不要使用单个字母 或者没有含义的字母组合当成一个名称
a b c as asd asdf qwer
尽量起英文名称 实在不行拼音(教学)

2.注释

在程序的开头写一个总结,解释一下这个程序是做什么的、其主要特点以及所用到的独 特技术。在较长的程序中还要加上注释,介绍每一个主要步骤并解释每个难以读懂之处。注 释写得简明扼要是很重要的,不能让整个程序都充满注释而使程序很难读懂。 除了行注释(以 // 开始)和块注释(以 /* 开始)之外,Java 还支持一种称为 Java 文档 注释(javadoc comment)的特殊注释形式。javadoc 注释以 /** 开始,以 V 结尾。它们能使 用JDK的 javadoc 命令提取成一个 HTML文件。 III.Yo 使用javadoc 注释(/**… /)来注释整个类或整个方法。为了将这些注释提取出来放 在一个javadoc HTML 文件中,这些注释必须放在类或者方法头的前面。要注释方法中的某 一步骤,使用行注释(//)。
单行注释:// 注释内容
*多行注释:/
注释内容
*/
*文档注释:/*注释内容/
注释可以相互嵌套 除了多行嵌套多行

调试代码 缩小错误范围
推荐 对于逻辑性较为复杂的程序而言
先写注释 - 思路
在写代码 - 一步一步实现

3.进制

计数方式 十进制 二进制 七进制 六十进制 二十四进制 三进制
十进制转其他进制:其他数%10直到商为0然后将余数倒写
其他数转十进制:从左到右本位上的数*基数的从左到右从零开始的幂。
十进制转二进制:找到十进制所在区间然后根据区间确定最大数,此为转为二进制的最高位然后减去这个数继续确定区间直到此数为零。
比如 99在128和64之间所以二进制最高位为100000,而后99-64=25,25在16和32之间所以下一位为101000 25-16=9所以下一位为101100最后剩一所以为101101。
二进制转8和16进制:三位二进制代表一位8进制,四位二进制代表一位16进制
1110转8进制16,转16进制E
非2的幂的进制转二进制必须转为10进制再转为二进制

4.常量及一些类型和字符集

常量:是指在程序中直接出现的数据->字面量
数字
整数 各种进制 在Java中 数字默认十进制 int
小数 直接小数 科学计数小数 double
布尔值
true false
字符
由一个符号被单引号’'所包含的数据
‘a’ ‘12’ X
’ ’
‘’ X
转义字符 \t \n \a \r
Unicode字符
字符集 ASCII Unicode gb2312 GBK UTF-8
Windows默认字符集ANSI
数字0~9 48~57
A~Z 65~90
a~z 97~122
字符串
由若干个字符被双引号"“包括的数据
“abc”
“a”
“‘a’”
“””"
“” 空串

4.基本数据类型

整型:
byte 占1个字节 取值范围:2^-7 ~2^7-1
short 占2个字节 取值范围:2^-15 ~2^15-1
int 占4个字节 取值范围:2^-31 ~2^31-1
long 占8个字节 取值范围:2^-63 ~2^63-1
字符型:
char 占2个字节 取值范围:1 ~2^15-1
浮点型:
float 占4个字节 取值范围:2^-31 ~2^31-1
double 占8个字节 取值范围:2^-63 ~2^63-1
布尔型:
boolean 不确定(争论)true false
bit byte 1
JVM 1->4字节 int
如何定义变量?
数据类型 变量名=常量;
引用数据类型
字符串
数组[]

5.输入和输出

Scanner对象
System.out.println();
实例:

import java.util.Scanner;


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);//Down掉 
		//代码可读性
		//程序的交互性 用户体验 相应的地方需要提示用户
		//程序的健壮性 不会因为用户的错误输入而导致程序终止 异常
		System.out.println(10/3.0);//误差 
		//取余运算 10/3=3 ~ 1 10%3=1
		//循环 奇偶判断
		//n%m 0~m-1
		//365 1-1 周一  1-20
		//1%7=1 周一 
		//%2 0 1
		//正负只看被除数
		System.out.println(-10%3);//-1
		System.out.println(10%-3);//1
		System.out.println(-10%-3);//-1
	}
}

6.2.5 数据类型转换

实例

public class ConstantDemo {
	public static void main(String[] args) {
		int i=3;
		int j=3;
		//10 常量 4字节 byte 1字节
		//自动类型转换
		byte b=10;//4->1 10并没有超过byte的取值范围
		/*	有效长度->有效值
			0000 0000 0000 0000 0000 0001 1000 1010
										  0000 1010
		 * */
		//强制类型转换 大->小
		b=(byte) 130;//Type mismatch: cannot convert from int to byte
		//Add cast to byte
		//Change type of b to int
		System.out.println(b);
		//1.两个变量相加 值可能会超过范围
		//2.两个变量相加为 int int不能直接转为更小的类型
		byte b1=120;
		byte b2=120;
		byte b3=(byte) (b1+b2);//Type mismatch: cannot convert from int to byte
		System.out.println(b3);
		
		short s1=123;
		short s2=456;
		short s3=(short) (s1+s2);
		
		//Java 整型是推荐 使用 int 
		int i1=Integer.MAX_VALUE;
		int i2=1;
		int i3=i1+i2;//第二种解释
		System.out.println(i3);
		//The literal 123123123123123123123 of type int is out of range 
		long l=1231231231231231231L;//L long
		
		char c=100;//ASCII值 编号
		System.out.println(c);
		c='a';
		System.out.println(c);
		c='a'+1;//4字节 int 98
		//1.先将'a'的编码和1相加 ->98 int
		//2.在将98赋给c 98<=65536
		System.out.println(c);
		System.out.println( (char)('a'+1) );//a1
		System.out.println( (char)600);
		
		float f=3.14F;//double
		double d=123123123123L;//D-double
		//1.强转 (float)3.14
		//2.3.14后加f
		float f1=3+3.14f;
		double d1=3+3.14;
//		int a=3+true;
		
	}
}

7.运算符

加 + 减 乘 * 除 / 取余 % 自加 ++ 自减 –
加等 += 减等 -= 乘等 *= 除等 /= 模等 %=
位与 & 位或 | 位异或 ^ 位左移 << 位右移 >>

实例:

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);
	}
}

8.常见错误和陷阱

未声明、未初始化的变量和未使用的变量
整数溢出
取整错误
超出预期的整数除法 (结果有问题)
冗余的输入对象(Scanner一个就可以满足没必要实例化第二个)
##9.课后例题:

public class Test1 {
	//显示当前时间
	public static void main(String[] args) {
		//获取从1970 1-1 00:00:00 到至今的毫秒数
		long millis=System.currentTimeMillis();
		long seconds=millis/1000;
		long minutes=seconds/60;
		long hours=minutes/60;
		//如何从经过的毫秒值里获取当前小时 总小时%24
		System.out.print(hours%24+8+":");//东八区+8
		//...当前分钟
		System.out.print(minutes%60+":");
		//...当前秒
		System.out.println(seconds%60);
	}
}

public class Test2 {
	public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		//获取用户输入的钱数 double
		System.out.println("请输入总钱数:");
		//美分数 
		int money=(int) (scanner.nextDouble()*100);
		//获取美元
		int dollar=money/100;//1156
		money=money%100;//剩余的美分数 56
		//获取2角5分
		int quarter=money/25;//2
		money=money%25;//6
		//获取1角
		int dime=money/10;//0
		money=money%10;//6
		//获取5分
		int nickel=money/5;//1
		int penny=money%5;//1
		System.out.println("dollar="+dollar);
		System.out.println("quarter="+quarter);
		System.out.println("dime="+dime);
		System.out.println("nickel="+nickel);
		System.out.println("penny="+penny);
	}
}

import java.util.Scanner;
public class Demo2_1 {//IPO Input Process Output
	public static void main(String[] args) {
		//1.获取用户输入的摄氏温度
		Scanner scanner=new Scanner(System.in);
			//提示信息
		System.out.print("Enter a degree in Celsius:");
		double celsius=scanner.nextDouble();
		//2.将摄氏温度转换为华氏温度
		double fahrenheit=(9.0/5)*celsius+32;
		//3.将华氏温度输出
		System.out.println(celsius+" Celsius is "+fahrenheit+" Fahrenheit");
	}
}

import java.util.Scanner;
public class Demo2_2 {
	//全局常量
	public static final double PI=3.1415926;
	public static void main(String[] args) {
		//1.获取用户输入的半径和高
		Scanner scanner=new Scanner(System.in);
			//提示
		System.out.print("Enter the radius and length of a cylinder:");
		double radius=scanner.nextDouble();
		double length=scanner.nextDouble();
		//2.先计算底面积 后计算体积
		double area=radius*radius*PI;
		double volume=area*length;
		//3.将体积输出
		System.out.println("The area is "+area);
		System.out.println("The volume is "+volume);
	}
}

import java.util.Scanner;
public class Demo2_3 {
	public static void main(String[] args) {
		//1.获取用户输入的数字
		Scanner scanner=new Scanner(System.in);
		System.out.print("Enter a number betweem 0 and 1000:");
		int number=scanner.nextInt();
		//2.将数字进行分解
		/*
		987%10=7->a
		987/10=98
		98%10=8->b
		98/10=9
		9%10=9->c
		a+b+c
		98%10=8->a
		98/10=9
		9%10=9->b
		9/10=0
		0%10=0->c
		*/
		int a=number%10;
		number/=10;
		int b=number%10;
		number/=10;
		int c=number%10;
		//3.将三个数字相加并输出
		System.out.println("The sum of the digit is "+(a+b+c));
	}
}

import java.util.Scanner;
public class Demo2_4 {
	public static void main(String[] args) {
		//1.获取用户输入的分钟数
		Scanner scanner=new Scanner(System.in);
		System.out.print("Enter the number of minutes:");
		int mintues=scanner.nextInt();
		//2.将从分钟数中转化处天数->年数
		int days=mintues/60/24;
		int years=days/365;
		days=days%365;
		//3.输出
		System.out.println(mintues+" mintues is approximately "+years+" years and "+days+" days");
	}
}

import java.util.Scanner;
public class Demo2_5 {
	public static void main(String[] args) {
		//获取从1970 1-1 00:00:00 到至今的毫秒数
		Scanner scanner=new Scanner(System.in);
		//获取偏移量
		System.out.print("Enter the time zone offset to GMT:");
		int offset=scanner.nextInt();
		long millis=System.currentTimeMillis();
		long seconds=millis/1000;
		long minutes=seconds/60;
		long hours=minutes/60;
		//如何从经过的毫秒值里获取当前小时 总小时%24
		System.out.print(hours%24+offset+":");//东八区+8
		//...当前分钟
		System.out.print(minutes%60+":");
		//...当前秒
		System.out.println(seconds%60);
	}
}

import java.util.Scanner;
public class Demo2_6 {
	public static void main(String[] args) {
		//1.输入水的重量 初始温度 最终温度
		Scanner scanner=new Scanner(System.in);
		System.out.print("Enter the amount of water in kilograms:");
		double weight=scanner.nextDouble();
		System.out.print("Enter the inital temperature:");
		double initalTemp=scanner.nextDouble();
		System.out.print("Enter the final temperature:");
		double finalTemp=scanner.nextDouble();
		//2.根据公式 计算能量
		double energy=weight*(finalTemp-initalTemp)*4184;
		//3.输出能量值
		System.out.println("The energy needed is "+energy);
	}
}

public class Demo2_7 {
	public static void main(String[] args) {
		double money=100;//本金
		double rate=5.0/100/12;//月利率
		//第一个月
		money=money*(1+rate);
		money=(money+100)*(1+rate);
		money=(money+100)*(1+rate);
		money=(money+100)*(1+rate);
		money=(money+100)*(1+rate);
		money=(money+100)*(1+rate);
		System.out.println(money);
	}
}

import java.util.Scanner;
public class Demo2_8 {
	public static void main(String[] args) {
		//1.输入两个坐标
		Scanner scanner=new Scanner(System.in);
		System.out.print("Enter x1 and y1:");
		double x1=scanner.nextDouble();
		double y1=scanner.nextDouble();
		System.out.print("Enter x2 and y2:");
		double x2=scanner.nextDouble();
		double y2=scanner.nextDouble();
		//2.计算两个坐标之间的距离
		double deltX=x2-x1;
		double deltY=y2-y1;
		//Math.pow(2,3) 2^3 
		//Math.pow(4,0.5) Math.sqrt()
		double distance=Math.sqrt(Math.pow(deltX, 2)+Math.pow(deltY, 2));
		//3.输出距离
		System.out.println(distance);
	}
}

import java.util.Scanner;
public class Demo2_9 {
	public static void main(String[] args) {
		//1.输入边长
		Scanner scanner=new Scanner(System.in);
		System.out.print("Enter the side:");
		double side=scanner.nextDouble();
		//2.计算面积
		double area=3*Math.sqrt(3)/2*Math.pow(side, 2);
		//3.输出面积
		System.out.println(area);
	}
}

import java.util.Scanner;
public class Demo2_10 {
	public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		//1.输入华氏温度、风速
		System.out.print("Enter the temperature in Fahrenheit between -58°F and 41°F:");
		double fahrenheit=scanner.nextDouble();
		System.out.print("Enter the wind speed(>=2) in miles per hour:");
		double speed=scanner.nextDouble();
		//2.根据公式计算室外风寒温度
		double windChill=35.74+0.6217*fahrenheit-35.75*Math.pow(speed, 0.16)+0.4275*fahrenheit*Math.pow(speed, 0.16);
		System.out.println(windChill);
		
	}
}

import java.util.Scanner;
public class Demo2_11 {
	public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		//1.输入三个坐标
		System.out.print("Enter three points for a triangle:");
		double x1=scanner.nextDouble();
		double y1=scanner.nextDouble();
		double x2=scanner.nextDouble();
		double y2=scanner.nextDouble();
		double x3=scanner.nextDouble();
		double y3=scanner.nextDouble();
		//2.根据坐标求三边
		double sideA=Math.sqrt(Math.pow(x1-x2, 2)+Math.pow(y1-y2, 2));
		double sideB=Math.sqrt(Math.pow(x1-x3, 2)+Math.pow(y1-y3, 2));
		double sideC=Math.sqrt(Math.pow(x2-x3, 2)+Math.pow(y2-y3, 2));
		//3.根据三边求面积
		double s=(sideA+sideB+sideC)/2;
		double area=Math.sqrt(s*(s-sideA)*(s-sideB)*(s-sideC));
		System.out.println(area);
	}
}

相关文章

    暂无相关文章

用户点评