栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java一阶段1

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java一阶段1

昨日内容复习

1.jdk,jre,jvm的关系

jdk > jre > jvm

1.三者联系:
JVM不能单独搞定class的执行,解释class的时候JVM需要调用解释所需要的类库lib。在JDK下面的的jre目录里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib和起来就称为jre。JVM+Lib=JRE。总体来说就是,我们利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析这些字节码,映射到CPU指令集或OS的系统调用。

2.三者区别:
a.JDK和JRE区别:在bin文件夹下会发现,JDK有javac.exe而JRE里面没有,javac指令是用来将java文件编译成class文件的,这是开发者需要的,而用户(只需要运行的人)是不需要的。JDK还有jar.exe, javadoc.exe等等用于开发的可执行指令文件。这也证实了一个是开发环境,一个是运行环境。
b.JRE和JVM区别:JVM并不代表就可以执行class了,JVM执行.class还需要JRE下的lib类库的支持,尤其是rt.jar。

原文链接:https://blog.csdn.net/ancientear/article/details/79483592

2.编写输出"helloworld"的步骤

`java
1)创建一个.java文件    HelloWorld.java
2)在java文件中编写一个类
  class HelloWorld{    //建议和文件名称保持一致
      //3)编写main方法,是能够被jvm识别的,是程序的入口
      public static void main(String[] args){
      		
      		//4)输出"helloworld"
      		System.out.println("helloworld") ;
         
      }
  }

3.java文件被编译和运行的步骤

1)进入dos控制台
2)进入到指定java文件所在的目录中
3)javac HelloWorld.java    javac  后面跟的是java源文件----->编译过程检验语法,没有问题
---产生 HelloWorld.class (字节码文件)
4)java HelloWorld   java 后面跟的是类名
5)输出的"helloworld"内容

4.什么是jdk,什么是jre,什么是jvm

JDK:Java Development Kit  Java开发工具包 里面包含了jre以及工具库(jdk安装目录里面有一个lib目录---tools.jar)
所有的Java文件都需要运行,前台java运行环境的支持,jre: Java Runtime Environment:Java运行环境,包含了jvm以及Java运行时所需要的核心类库(jre目录下面 lib目录----rt.jar)

JVM:Java Virtual Machine Java虚拟机,是一个假想计算机,所有的java应用程序需要交给jvm(jvm运行在操作系统之上)

5.配置环境变量path的意义是什么?

如果不配置path环境变量,我们书写的java代码都需要放在jdk安装目录的bin目录中,随着我们开发过程中java文件越来越多,放在bin目录不合适了,部分java文件不需要了删除,不小心将jdk其他的可执行.exe这种文件删除,导致jdk出问题!

为了让java文件可以在指定目录中进行编译和运行,就需要配置path!(javac 和java)
推荐配置第二种方式
系统变量-----新建变量名 :JAVA_HOME
              变量值  :jdk的安装目录
              
              path:%JAVA_HOME%bin;
              好处:
              1)jdk升级,只需要改变JAVA_HOME的变量值,不需要手动更改path
              2)后期使用web服务器 tomcat,启动的时候需要寻找系统变量中是否有一个JAVA_HOME,如果没有启动失败!

今日内容

Java注释


  



class HelloWorld{
	
	
	public static void main(String[] args){
		
		System.out.println("今天天气不错!") ;
		System.out.println("helloworld!") ;
		System.out.println("helloJavaEe!") ;
	}
}

Java中的关键字



Java中标识符



class MakeNameDemo{
	 
	
	public static void main(String[] args){
		
		//定义变量
		//int 1a  = 10 ;  //不能以数字开头
		//System.out.println(a) ;
		
		//int public = 100 ; //不能是Java中的关键字
		//System.out.println(public) ;
		
		
		//int _price = 100 ; //下划线可以开头,不建议,最好的方式前面加一个单词!
		//System.out.println(_price) ;
		
		
		//int Public = 200 ; java是严格区分大小写,虽然此时变量明不是关键字,这种写法不建议,一定"见名知意"
		int productPrice = 200 ; 
		System.out.println("productPrice:"+productPrice) ;
		
	}
}

Java中的常量

class ConstantDemo{
	
	public static void main(String[] args){
		
		//测试
		//字符串常量
		System.out.println("helloworld,helloJavaEE") ;
		
		System.out.println("-----------------------------------------") ;
		
		//字符常量
		System.out.println('A') ;
		System.out.println('我') ;
		System.out.println('a') ;
		System.out.println('0') ;
		//System.out.println('ab') ; 错误写法
		
		System.out.println("-------------------字符参与运算--------------------") ;
		
		
		System.out.println('A'+1) ;
		System.out.println('a'+1) ;
		System.out.println('0'+1) ;
		
		
		System.out.println("-----------------------整数常量和小数常量------------------------------") ;
		
		System.out.println(100) ;
		System.out.println(3.14) ;
		
		System.out.println("-----------------------布尔常量------------------------------") ;
		System.out.println(true) ;
		System.out.println(false) ;
		
		System.out.println("-----------------------空常量null------------------------------") ;
		
		//引用类型(面向对象部分讲)的默认值就是null
		//String:jdk提供的 代表字符串
		
		String str = null ;
		System.out.println(str) ;
		
	}
}

进制运算


class JinZhiDemo{
	
	public static void main(String[] args){
		
		//二进制转换成十进制
		System.out.println(0B100) ;//4
		//八进制转换成十进制
		System.out.println(0100) ;  //64
		//整数默认就是十进制
		System.out.println(100) ;//100
		//十六进转成十进制
		System.out.println(0x100) ;//256
		
	}
}





变量



class DataTypeDemo{
	
	
	public static void main(String[] args){
		
		
		//测试基本数据类型
		//字节类型byte
		byte b = 100 ;
		b = 120 ;//重新赋值 
		//byte b = 120 ;
		System.out.println("b:"+b) ;
		System.out.println("-------------short短整型----------------") ;
		short s  = 150 ;
		s = 100 ;
		System.out.println("s:"+s) ;
		
		
		System.out.println("-------------整数的默认类型int----------------") ;
		//以后需求没有明确数据类型,都默认使用int
		int i = 1000 ;
		i = 10000 ;
		System.out.println("i:"+i) ;
		
		
		System.out.println("-------------长整型long----------------") ;
		
		//int ii = 10000000000000;//DataTypeDemo.java:82: 错误: 过大的整数: 10000000000000
		//System.out.println("ii:"+ii) ;
		//当这个数据的值已经超过了int类型的最大值,那么报错,此时需要使用long 长整型
		
		//long l = 10000000000000 ;//定义long类型,在值的后面不带标记,那么jvm认为int,但是值已经超过了范围
		//long类型的值后面加入L或者l
		
		long l = 10000000000000L;
		System.out.println("l:"+l) ;
		
		System.out.println("-------------float类型----------------") ;
		//浮点类型默认是double,jvm在编译的时候,认为12.56就是一个double类型值,但是此时变量类型float
		//Java语法规定:在定义float类型的值的后面加上F或者f进行标记,它是一个单精度
		//float f = 12.56 ;//不兼容的类型: 从double转换到float可能会有损失
		float f = 12.56F;
		System.out.println("f:"+f) ;
		
		System.out.println("-------------double类型(浮点类型默认)----------------") ;
		//本身就定义double类型
		double d = 3.14 ;
		d = 13.42 ;
		System.out.println("d:"+d) ;
		
		
		System.out.println("-------------字符类型char----------------") ;
		char ch = 'A' ;
		//char ch2 = 'abc' ;//错误的写法
		System.out.println("ch:"+ch) ;
		ch ='a' ;
		System.out.println("ch:"+ch) ;
		ch ='0' ;
		System.out.println("ch:"+ch) ;
		ch = '国' ;
		System.out.println("ch:"+ch) ;
		
		
		System.out.println("-------------boolean类型----------------") ;
		boolean flag = true ;
		flag = false ;
		System.out.println("flag:"+flag) ;
		
	}
	
}

隐式类型转换 自动类型转换

class DataTypeDemo2{
	
	
	public static void main(String[] args){
			//int类型变量a,初始化3 ;
			//byte类型变量b,初始化值4 ;
			int a = 3 ; 
			byte b = 4 ;
			
			
			//定义一个结果变量,接收最终的值
			int result = a + b ;  //将b这个类型----int类型的4
			System.out.println("result:"+result) ;
 		
	}
}




Java中的隐式转换和显式转换
隐式类型转换也叫做自动类型转换。
1、规则:
从存储范围小的类型到存储范围大的类型。

2、转换方向:
byte→short(char)→int→long→float→double(这里指的是只有前面的数据类型能随便转换成后面的)
—实际开发中这样的类型转换很多,但没有为这种转换提供专门的语法,都是由虚拟机自动完成。

3、例子:
byte b = 10;short sh = b;这里在赋值时,JVM首先将b的值转换为short类型,然后再赋值给sh

二、显式类型转换
显式类型转换也叫做强制类型转换。
1、规则:
从存储范围大的类型到存储范围小的类型。

2、转换方向:
double→float→long→int→short(char)→byte
强制类型转换通常都会存储精度的损失,所以使用时需要谨慎。
—需要在被转换值的前面添加个括号,括号里面写的是希望得到的数据类型。

3、例子:
int m = 1234;
byte b = (byte)m;//-46
解析:
整数强制转换为整数时取数字的低位,例如int类型的变量转换为byte类型时,则只取int类型的低8位(也就是最后一个字节)的值。
则m的值还是12345,而b的值为-10。b1的计算方法如下:m的值转换为二进制是10011010010,取该数字低8位的值作为b的值,则b
的二进制值是11010010,按照机器数的规定,最高位是符号位,1代表负数,在计算机中负数存储的是补码,则该负数的原码是10101110,
该值就是十进制的-46。

附:
补码算得原码:—百度百科
算法1: 补码=原码取反再加1的逆运算
10010110是补码,应先减去1变为反码,得10010101;
由反码取得源码即除符号位外其他为按位取反,得11101010,即十进制数的-106

算法2:负数补码速算法,由最低位(右)向高位(左)查找到第一个1与符号位之间的所有数字按位取反的逆运算
10010110是补码,符号位与最后一个1之间的所有数字按位取反,得11101010

注意:
+=具有强转效果(short s = 1;s = s + 1;s += 1;前面的s=s+1会报错,因为s+1会先转换成int类型,然后再赋值给short类型,这样可能数据丢失;s+=1具有强转效果,相当于s = (short)(s+1),所以正确)

原文链接:https://blog.csdn.net/qq_16268979/article/details/114629247

byte a = 128;引发的问题
就是当一个int值大过byte表示的数值范围的时候,这个时候问题就出现了。比如,int的128转换成一个byte类型会是-128。这是因为补码运算的关系造成的。首先,128写成16进制是0x00000080,当做int到byte的类型转换的时候,前面的0被截断形成0x80。在二进制中0x80可以写成10000000,如果这是一个无符号数哪么一切正常,但是如果是一个有符号数就会经过补码运算。对于负数而言,其补码运算就是反码(就是1转换成0并且反正既然)加一。哪么,10000000的补码就是01111111加一,即10000000=128(十进制)。因此,byte0x80事实上表示的也

就是-128了。类似的int类型的129就是byte类型的-127,而int类型的130则是byte类型的-126,等等,直到int的255对应为byte的-1。


     哪么如果到了256呢?此时,地位的字节被0来填充,简而言之256就是0x00000100。因此,转换成byte就是0,这个转换循环也就是256个

原文链接:https://blog.csdn.net/jackwofe/article/details/4955117

数据类型匹配问题


class DataTypeDemo3{
	
	
	public static void main(String[] args){
			//int类型变量a,初始化3 ;
			int a  = 3 ;
			//byte类型变量b,初始化值4 ;
			byte b = 4 ;
			
			
			//结果使用byte类型接收
			//byte result = a + b ; // 不兼容的类型: 从int转换到byte可能会有损失    
			
			//=号右边:byte类型 b先提升为int类型,和int类型的a进行计算----结果int类型 4个字节
			//=左边:byte类型接收,1个字节
			//System.out.println("result:"+result) ;
			
			
			//套格式
			//目标数据类型 变量名 = (目标数据类型)(初始化值) ;
			byte result = (byte)(a+b) ; 
			System.out.println("result:"+result) ;
		
	}
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/863076.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号