**
java学成下山之新手村
**
计算机的组成
计算机是我们经常使用的工具,我们平时只是看到他是一个物理的可见的盒子和各种外接设备,但是我们大多对于其工作原理是不清楚的,这里就大致讲述一下。
计算机是由硬件和软件组成的
先说硬件硬件就是
各种输入设备,输出设备,存储设备
输入设备:键盘、鼠标、摄像头、麦克风、扫描仪以及处理器组成
输出设备:显示器、音响、打印机、绘图机
存储设备:硬盘、U盘、光盘、内存(RAM)
处理器:中央处理器(CPU)、图形图像处理器(GPU)也就是显卡
除此之外还有和各种丰富的接口
软件直白点说就是让人直接简单效率的使用计算机所开发出来的
软件分为系统软件和应用软件
软件就是按照一定顺序组织起来的计算机指令与数据的集合。
系统软件:使计算机硬件具备基本功能。
应用软件:必须在系统软件的基础上才能使用。
语言
机器语言:01组合起来的
汇编语言:有一些英文组合
高级语言:C/C++、java、python
编译器:读一条翻译成机器语言再执行一条。
解释器:翻译完在执行。
软件开发
软件开发的大致步骤具体可以去学习软件工程相关的书籍。
需求分析
概要设计
详细设计
编码
测试
后期维护
计算机工作大致途径的?
内存与硬盘的关系
运行时内存从硬盘读取数据CPU再从内存读取。
CPU为什么不从硬盘直接读取数据——CPU的速度太快,硬盘跟不上。
三种java技术架构
J2EE企业版
J2SE标准版
J2ME小型版
java跨平台运行原理
JVM虚拟机充当系统之间的翻译,这就是java可以跨平台运行的原理。
因为计算机的操作系统是不同的,是根据不同的语言编写的,所以一种语言是无法直接在另外的语言编写的系统上直接运行的,所以需要一个翻译器JVM虚拟机去翻译。
就像一个国家的人去另一个国家语言不通这时有一个翻译人员就可以了。
java编译步骤
java源代码(.java)–>java字节码(.class)–>java虚拟机–>操作系统–>底层硬件
JRE:java运行环境,包含虚拟机和java程序所需的核心类库
JDK:java开发工具。
编译和运行java程序
步骤一:编写
步骤二:编译
步骤三:运行
安装java运行环境
Oracle官网下载javaJDK开发工具,安装在默认地址C:\Program Files。
验证电脑安装成功javaJDK。window+R输入cmd,打开命令提示框。输入java -version。
接下来配置环境变量:我的电脑-->属性-->高级系统设置-->高级-->环境变量-->找到系统变量中的Path-->添加C:\Program Files\Java\jdk1.8.0_181\bin
就配置完成了。
java程序的编写步骤
一、和正常解决数学问题一样先要确定解题思路与步骤;
二、把步骤按相应的编程语言来实现;
三、让计算机去执行。
java的基本数据类型
关键字
java中的具有特殊含义的单词,程序员不可以随意使用。
class:一个类
public:函数的权限
static:函数的类型
void:函数的返回值类型
String System:严格来说也不是关键字,java自带,类的名称,也不能随意使用。
特点:关键字都是全小写的。
标识符
程序员自己定义的一些名称。
组成规则:
1.由字母、数字、下划线_、美元符号&组成的;
2.数字不能开头;
3.严格区分大小写;
4.不要使用关键字和java中的自带类名称。
标识符组成规范:小驼峰是命名法、大驼峰式命名法、全大写命名法。
注释
注释的存在是为了让程序员更加清楚容易的理解代码。
注释不属于代码范畴,不会进行编译。
注释分为:
单行注释://注释内容,直到换行
多行注释:
/* 注释内容
*/
文档注释:
/**注释内容
*/
注意:
单行可以套多行
多行可以套单行
多行不可以套多行
常量
常量分为:
整数
整数有二进制、八进制、十进制、十六进制
public clsaa test01{
public static void main(String[] args){
System.out.println(0b101); //打印二进制,结果十进制
System.out.println(062); //打印八进制,结果十进制
System.out.println(0xFA5); //打印十六进制,结果十进制
浮点数:一般小数和科学计数。
字符:被’ '包含的一个或多个数字、字母或符号。
字符串:被" "包含的一个或多个数字、字母或符号。
布尔型:true/false,也是关键字的一种。
空:null关键字。
单位
八个比特位组成一个字节byte 8bit=1byte
字节是计算机当中的最小计数单位
kb mb gb tb
变量
程序中一直变化的数据
是为了解决重复性数据更迭的问题
变量的本质
存储一些计算机中的产生的一些临时的数据
内存中的某一个进程的临时存储区域
每一个变量空间在创建的时候都会被随机的分配物理地址
指针
指针
指针是c语言中精华,指针就是一个地址,就相当于我们要去找一个人,我们该怎么去找呢,假如你不知道他现在在哪,最简单的就是去他家里。
我们先从简单的定义开始:
int a;//定义一个普通的整型变量
int *a;//a与*结合说明a是一个指针
int **a;//a与*结合说明a是一个指针再加上一个*说明指针所指向的元素是指针
指针也是一种变量,它里面的数值被编译器解释为内存中的一个地址。
指针表示的意义
指针储存的数值实际就是被当做一个地址,或者叫指针所指向的地址。
&和*
&是取地址运算符,*是间接运算符。
&a 的运算结果是一个指针。
*a 的结果是a 所指向的东西。
变量
说指针先讲变量,那么什么是变量呢?
我们都知道在程序的进程中需要存储一些数据,这些数据都是临时数据,通常储存在内存中,变量在创建的时候都会被系统给随机分配一个地址,通过访问这个地址从而获取到这个变量。因为数据是运行中是会变化的额,这样的话就会找不到这个变量,所以计算机会生成一个地址表来寻找,也就是说,变量被创建的时候会有一个地址,常量数据都储存在常量池中,也会有一个地址,当你需要给变量赋值的话就寻找常量的地址。
接下来就有指针了
#include<stdio.h>
int main(){
int a=3; //创建普通变量a,存放数据3
int b=4; //创建普通变量b,存放数据4
int* c; //创建一个指针变量c
c=&b; //指针变量c指向普通变量b,就是将变量b的地址赋予指针变量c
int** d; //创建一个指向指针变量的指针变量d
d=&c; //指针变量d指向c,就是将变量c的地址赋予指针变量d
printf("a的值=%d\n",a);//直接打印a的值,结果为3
printf("b的值=%d\n",b);//直接打印b的值,结果为4
printf("a的地址=%d\n",&a);//&是取地址符号,这里打印a的地址
printf("b的地址=%d\n",&b);//这里打印b的地址
printf("c的值=%d\n",c); //c是一个指针变量,它里面存放的是b的地址,所以这里打印的是b的地址
printf("*c的结果=%d\n",*c);//c本身存放的是b的地址,*c就是根据b的地址去找b,这里打印的是b的值
printf("d的值=%d\n",d);//d里面存放的是c的地址,c的地址存的是b的地址,所以这里是打印b的地址
printf("*d的结果=%d\n",*d); //d里面存放的是c的地址,*d就是根据c的地址去找c,而c里面存放的 是b的地址,所以这里打印b的地址
printf("**d的结果=%d\n",**d); /*d表示b的地址,**d就是根据b的地址去找b,这里打印的是b的值,结果为4
printf("%d\n",*&a);//&a是取a的地址,*&a就是根据a的地址去找a,结果为3
printf("%d\n",&**d);//同上,*d就是c,*c就是b,&b就是取b的地址
printf("%d\n",*&**&d); //&d是取d的地址,*&d就是d里面存放的c的地址,**&d就是c里面存放的b的地址,&**&b就是取c的地址,*&**&b就是c所指的变量b的地址
}
以上就是我对指针的理解。
Java代码
public class Demo01 { //类名称
public static void main(String[] args){ //主函数
double y; //定义一个double型变量y
y=(9.5*4.5-2.5*3)/(45.5-3.5); //给y赋值
System.out.println(y); //输出y
}
}
public class Demo02 { //类名称
public static void main(String[] args){ //主函数
double distance=14.0*(1/1.6); //定义一个double型变量distance并赋值
double time=45/60.0+(35/60)/60.0; //定义一个double型变量time并赋值
double speed=distance/time; //定义一个double型变量speed并赋值运算
System.out.println("平均速度为:"+speed+"MI/H"); //输出平均速度
}
}
public class Demo03 { //类名称
public static void main(String[] args){ //主函数
double distance=24*1.6; //定义一个double型变量distance并赋值
double time=1.0+10/60+30/60/60; //定义一个double型变量time并赋值
double speed=distance/time; //定义一个double型变量speed并赋值运算
System.out.println("平均速度为:"+speed+"KM/H"); //输出平均速度
}
}
}
public class Home01{ //类名称
public static void main(String[] args){ //主函数
int live01=60*60*24*365/7; //定义一个变量并赋值
int died01=60*60*24*365/13; //定义一个变量并赋值
int yimin01=60*60*24*365/45; //定义一个变量并赋值
int sum01=312032486+live01-died01+yimin01; //定义一个变量并赋值
System.out.println("一年后人口总数为:"+sum01); //输出一年后人口数
int sum02=sum01+live01-died01+yimin01; //定义一个变量并赋值
System.out.println("两年后人口总数为:"+sum02); //输出两年后人口数
int sum03=sum02+live01-died01+yimin01; //定义一个变量并赋值
System.out.println("三年后人口总数为:"+sum03); //输出三年后人口数
int sum04=sum03+live01-died01+yimin01; //定义一个变量并赋值
System.out.println("四年后人口总数为:"+sum04); //输出四年后人口数
int sum05=sum04+live01-died01+yimin01; //定义一个变量并赋值
System.out.println("两年后人口总数为:"+sum05); //输出五年后人口数
}
}
public class Home02 { //类名称
public static void main(String[] args){ //主函数
double x,y; //定义两个变量
x=(44.5*0.55-50.2*5.9)/(3.4*0.55-50.2*2.1); //给x赋值
y=(3.4*5.9-44.5*2.1)/(3.4*0.55-50.2*2.1); //给y赋值
System.out.println(x); //输出x
System.out.println(y); //输出y
}
}
import java.util.Scanner;
public class Home02_01{
public static void main(String[] args){
Scanner input=new Scanner(System.in); //创建一个Scanner类型的变量并声明input是一个Scanner类型的变量
System.out.println("请输入ftemp的值:");//输出
double ftemp;//定义一个double型变量
ftemp=input.nextDouble();//从键盘上读入一个数并赋值给ftemp
double ctemp=(9.0 / 5) * ftemp+32;//定义一个double型变量并赋值运算
System.out.println("华氏温度为:"+ ctemp);//输出
}
}
import java.util.Scanner;
public class Home02_02{
public static void main(String[] args){
Scanner input=new Scanner(System.in);//创建一个Scanner类型的变量并声明input是一个Scanner类型的变量
System.out.println("请输入半径:"); //输出
double radius=input.nextDouble();//从键盘上读入一个数并赋值
System.out.println("请输入高:");//输出
double hight=input.nextDouble();从键盘上读入一个数并赋值
double area=radius*radius*3.14;定义一个double型变量并赋值运算
double volume=area*hight;//定义一个double型变量并赋值运算
System.out.println("圆柱的体积为:"+ volume);//输出
}
}
import java.util.Scanner;
public class Home02_03{
public static void main(String[] args) {
Scanner input=new Scanner(System.in);//创建一个Scanner类型的变量并声明input是一个Scanner类型的变量
System.out.println("请输入一个0-1000之间的整数:");//输出
int number=input.nextInt();//从键盘上读入一个数并赋值
if(number==1000)//如果number等于1000执行下面的语句
{
System.out.println("各位数字之和为:");//输出
System.out.print(number/1000);//输出
}
else if(100<=number&&number<1000)//如果number满足条件则执行下面语句
{
System.out.print("各位数字之和为:");
System.out.print(number%10+(number/10)%10+number/100);
}
else if(10<=number&&number<100)
{
System.out.print("各位数字之和为:");
System.out.print(number%10+number/10);
}
else if(0<=number&&number<10)
{
System.out.print("各位数字之和为:" );
System.out.println(number);
}
else//如果都不满足则执行下面语句
{
System.out.println("请重新输入:");
}
}
}
import java.util.Scanner;
public class Home02_04{
public static void main(String[] args){
Scanner input=new Scanner(System.in);//创建一个Scanner类型的变量并声明input是一个Scanner类型的变量
System.out.println("请输入GMT的时区偏移量:");
double GMT=input.nextDouble();//从键盘上读入一个数并赋值
long totalMillseconds=System.currentTimeMillis();//定义一个long型变量并赋值
long totalSeconds=totalMillseconds/1000;
long currentSecond=totalSeconds%60;
long totalMinutes=totalSeconds/60;
long currentMinute=totalMinutes%60;
long totalHours=totalMinutes/60;
double currentHour=totalHours%24+GMT;
System.out.println("当前时间为:"+currentHour+":"+currentMinute+":"+currentSecond);
}
}
public class Home02_05{
public static void main(String[] args) {
double sum01=100*(1+0.00417);//定义一个double型变量并赋值运算
double sum02=sum01*(1+0.00417);
double sum03=sum02*(1+0.00417);
double sum04=sum03*(1+0.00417);
double sum05=sum04*(1+0.00417);
double sum06=sum05*(1+0.00417);
System.out.println("六个月后账户上的钱为:"+sum06);//输出
}
}
import java.util.Scanner;
public class Home02_06{
public static void main(String[] args) {
Scanner input=new Scanner(System.in);//创建一个Scanner类型的变量并声明input是一个Scanner类型的变量
System.out.println("请输入第一个点x1,y1:");
double x1,y1;
x1=input.nextDouble();//从键盘上读入一个数并赋值
y1=input.nextDouble();
System.out.println("请输入第二个点x2,y2:");
double x2,y2;
x2=input.nextDouble();
y2=input.nextDouble();
double distance;
distance=Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));
System.out.println("两点间的距离为:"+distance);
}
}
import java.util.Scanner;
public class Home02_07{
public static void main(String[] args) {
Scanner input=new Scanner(System.in);//创建一个Scanner类型的变量并声明input是一个Scanner类型的变量
System.out.println("请输入第一个点x1,y1:");
double x1,y1;
x1=input.nextDouble();
y1=input.nextDouble();//从键盘上读入一个数并赋值
System.out.println("请输入第二个点x2,y2:");
double x2,y2;
x2=input.nextDouble();
y2=input.nextDouble();
System.out.println("请输入第三个点x2,y2:");
double x3,y3;
x3=input.nextDouble();
y3=input.nextDouble();
double side1 = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));
double side2 = Math.sqrt(Math.pow(x3 - x2, 2) + Math.pow(y3 - y2, 2));
double side3 = Math.sqrt(Math.pow(x1 - x3, 2) + Math.pow(y1 - y3,2));
double s = (side1 + side2 + side3) / 2;
double area = Math.sqrt(s * (s - side1) * (s - side2) * (s - side3) );
System.out.println("The area of the triangle is :" + area);
}
}