第一天:复习java入门知识,jvm内存,java程序执行流程,数据类型,变量和自动类型转换,运算符...
学习java目的:起初是因为想找工作,拿高薪。后来逐渐在学习java技术的过程中渐渐循喜欢上java,对java产生了兴趣,我相信只要有了兴趣,在通过自己努力学习,学习好技术,高薪也会随之而来的。是不矛盾,不冲突的。
虽然说刚开始学的懵懵懂懂的,有些原理不怎么理解。但是我相信通过自己持之以恒的学习,会达到自己的目标。我的人生态度活到老,学到老。
程序员为什么叫程序员?就是写程序的人
那么什么是程序呢?由一系列有序的指令组成的
计算机底层只能识别0和1(二进制数)
java语言的的特点:
1.面向对象
2.可以在不同的操作系统上运行(跨平台)
3.简单易学,开源免费,兼容性好....
java语言写好的程序需要JDK编译才能运行
计算机只能识别0和1,java语言写好的程序,如何实现一次编译,到处运行(在不同的操作系统上运行)? 依赖于jvm(虚拟机)
JDK,JRE,JVM三者之间的关系 :JDK包含JRE和JVM JRE包含JVM
JDK(Java Develop KIt):java程序运行工具,里面包括一些核心的类库 (java开发工具包)
JRE(Java Runtime Environment):java运行环境(java运行环境)
JVM(Java Virtual Machine):java虚拟机
java程序执行过程:把写好的java程序(.java文件)首先通过JDK中的javac工具翻译成.class(二进制文件),在通过jre中的java工具运行翻译好的.class文件即可。
java数据类型分为两种,分别为基本数据类型和引用数据类型
基本数据类型分为4类八种基本数据类型
整数类型 byte short int long 在内存中所占的内存空间大小分别是1个字节,2,4,8。
byte(1个字节)的取值范围是-128-127
short(2个字节)的取值范围是-32768-32767
int(4个字节)的取值范围是-2147483648 (-2的31次方)-2147483647 (2的31次方-1)
long(8个字节)的取值范围是-9223372036854775808-9223372036854775807
1个字节=8个位(bit)
浮点型类(小数类性) flaot(单精度浮点型)占4个字节 double(双精度浮点型) 占8个字节
小数和整数的空间组织结构是不一样的,所有不能以字节大小来判断空间大小
字符类型 char 2个字节
布尔类型 boolean(true和false)真的假 1个字节
基本数据类型是没有地址值
引用数据类型:引用数据类型是有在内存中是有地址值的,地址值是可以在控制台打印出来的。
常量:java程序在运行过程中,其值不会发生改变的量
变量:java程序在运行过程中,其值会发生改变的量
本质:在内存中开辟的一小块内存空间,用来临时存储数据用的。
补充知识:硬盘是永久性存储数据,内存是临时性存储数据的。
如何定义变量?
变量数据类型 变量名=变量值;
例如:int a=1;
相当于我们在内存中开辟了一块叫做变量名(a)的数据类型(int)的内存空间,往叫变量名的空间存变量值(1)。
定义变量时需要注意的细节?
1.变量名可以是中文汉字,但是不建议使用,这是规范。
2.变量名可以由数字,英文字母,和¥($)美元符号,下划线_组成
3.变量名不可以以数字开头
4.变量名不能是关键字
5.变量名最好取的有意义(最好是能看到名字就知道意思)
6.同一个程序中,变量名不要重名,不然下面的重复名字的变量会把你上面定义的一样名字的变量覆盖。
java程序执行原理:
1.首先把你写好的程序通过JDK中的javac工具翻译成二进制文件或者也可以叫.class文件
2.在通过Jre中的java工具把翻译(编译)好的二进制文件运行,它会把这个二进制文件加载(通过类加载器)到jvm内存中(放在jvm内存的方法区中)
3.然后存在JVM内存的方法区中,存在方法区的字节码文件区域中
扩展:交换思想
例如:有两个变量分别是a和b,它们的值分别是10和20 ,需要把a和b中的值进行交换,怎么交换?
//交换思想 a和b的值交换
int a=10;//a=10 交换之后a=20 int b=20;//b=20 交换之后 b=10 int c;//临时存储的变量 c=a;//首先把a的值赋值给临时变量c a=b;//在把b的值赋值给a b=c;//最后把c的值赋值给b 这样a和b的值就交换了 System.out.println("交换之后a的值:"+a); System.out.println("交换之后b的值:"+b);
数据类型的转换:
java中分类:
自动类型转换:不需要做什么强制措施,数据就可以进行自动转换。(小的转大的)
例如:int a;
byte b=1;
a=b;
在内存中定义变量时,都是依照我们开辟的内存空间占的大小去确定是什么数据
强制类型转换:大的转小的(转换成谁就加谁)
int a=11; byte b=(byte) a; System.out.println("b的值是"+b);
java中的异常分为两种?分别是编译时异常和运行时异常
int a=10/0 是算数逻辑异常 会在运行时报错,因为除数不能为0.
题目:通过%和/分别取出12345的个位,十位,百位,千位,万位值?
int a=12345; int gewei=a1%10000%1000%100%10;//a1/1%10 也可以通过这种(更好一点) int shiwei=a1%10000%1000%100/10;//a1/10%10 int baiwei=a1%10000%1000/100;//a1/100%10 int qianwei=a1%10000/1000;//a1/1000%10 int wangwei=a1/10000;//a1/10000%10 System.out.println("a1的个位数值是"+gewei); System.out.println("a1的十位数值是"+shiwei); System.out.println("a1的百位数值是"+baiwei); System.out.println("a1的千位数值是"+qianwei); System.out.println("a1的万位数值是"+wangwei);