java基础_01

137 阅读23分钟

1Java基础 1.1简单认识java 1.1.1发展历史 Sun公司于1995年5月推出的Java面向对象程序设计语言和Java平台的总称。由James Gosling和同事们共同研发,并在1995年正式推出。 Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论。

1.1.2Java分为三个体系 JavaSE ( J2SE ) (Java2 Platform Standard Edition,java平台标准版) C/S JavaEE ( J2EE ) (Java 2 Platform,Enterprise Edition,java平台企业版) JavaME ( J2ME ) (Java 2 Platform Micro Edition,java平台微型版)。 2005年6月,SUN公司公开Java SE 6。此时,Java的各种版本已经更名以取消其中的数字"2":J2EE更名为Java EE, J2SE更名为Java SE,J2ME更名为Java ME。

Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点 。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等

现在是Orcale的子公司 2Java环境的搭建 要开始学习 Java 编程,需要两样东西。 JDK + IDE。(eclipse/myeclipse/idea) 1.8的到来慢慢的趋向idea 2016.3 JDK安装及环境变量设置 JDK的安装 JDK官网地址:oracle官网(sun公司被甲骨文收购了,所以要去oracle官网) www.oracle.com/technetwork… 注意:下载安装时需要注意操作系统的版本和JDK的版本之间对应的关系。 2.1.1Jdk下载以及配置 2.1.1.1打开官网

应该检查你的操作系统是32位或64位的,并下载相应的JDK版本(我的是 64bit 的电脑)。

2.1.1.2同意协议后,选择对应版本下载:

2.1.1.3看看下载后文件,它长这样:

2.1.1.43- 安装Java(JDK)

2.1.1.5 进入 JDK 安装目录,例如目录: (建议使用默认路径)

D:\Program Files\Java\jdk1.8.0_65

JDK安装后,安装程序会询问你JRE要安装的位置。在这里我选择: C:\DevPrograms\Java\jre.8.0_65\

经过一段时间后,Java 成功完成安装。

2.1.1.6现在查看目录,将有2个目录,它们分别是:

2.1.2配置Java环境变量 如果您使用的是Window Vista 或 Windows7(我的是Windows7): 2.1.2.1在桌面上,右键单击"计算机"图标,然后选择属性。

2.1.2.2单击 "新建" 创建一个名为 JAVA_HOME 新的环境变量。 输入路径JDK目录。 变量名称: JAVA_HOME 变量值: D:\Program Files\Java\jdk1.8.0_65

2.1.2.3下一步修改环境变量路径(Path)。 C:\Ruby23\bin;G:\app\Administrator\product\11.2.0\dbhome_1\bin;D:\mysql-5.6.24-win32\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\system32\wbem;%JAVA_HOME%\bin;C:\Program Files\TortoiseSVN\bin;E:\apache-tomcat-7.0.21\bin;C:\Program Files\MySQL\MySQL Server 5.5\bin;%M2_HOME%\bin

添加到路径(Path)的前面(或后面或中间都可以): %JAVA_HOME%\bin; 如果不想配置变量直接 拷贝 C:\Java\jdk1.7.0_79\bin

到这里已经安装了 Java,接下来我们来验证一下安装结果。 2.1.2.4打开”运行“,如下图所示:window+R

2.1.2.5点击”确定“,在命令行上输入:java 后,显示结果如下:

有命令提示,则说明已经成功安装了 Java,到此Java安装的介绍完成。 2.1.3怎么查看java的jdk版本

2.1.4Jdk配置总结:

配置JDK的环境变量 为了让操作系统找到JDK提供的编译、运行命令等文件所在路径;我们可以通过配置PATH环境变量来实现。 PATH环境变量是一系列系统目录,当运行时操作系统会进入到PATH环境变量中的每一个目录查找对应的命令。 配置JAVA_HOME变量指向JDK安装目录,目的让软件如何找到JDK。eg:D:\java\jdk1.7

配置CLASSPATH变量,表示搜索路径,可以不用配置。 PATH指向JDK的bin目录,因为javac,java等命令安装在此目录下面。 eg:%JAVA_HOME%\bin; 2.2JDK,JRE,JVM的关系 JDK -- Java Development Kit(Java开发工具包) 如果没有安装jdk eclipse绝对启动不来,但是如果你用myeclipse就不需要安装jdk,因为自带 JRE -- Java Runtime Environment(Java运行环境) JVM -- Java Virtual Machines(Java虚拟机) JRE = Java系统类库 + JVM; JDK = JRE + 编译运行开发工具; 运行java程序最小环境为JRE。

开发java程序最小环境为JDK。

2.3编译运行 Java程序基本结构及编译运行 编写的java源文件(.java) 自编译生成(我们的工具有自编译功能) 字节码文件 (.class)
程序的运行需要JVM的支持,为字节码文件.class提供运行环境。

“java解释器就是把在java虚拟机上运行的目标代码(字节码)解释成为具体平台的机器码的程序。”即jdk或jre目录下bin目录中的java.exe文件,而javac.exe是编译器。 运行java程序的过程是先用javac编译,然后用java解释。而一经编译成功后,就可以直接用java.exe随处解释运行了。 裸机:是指没有配置操作系统和其他软件的电子计算机 2.4虚拟机(JVM) 2.4.1虚拟机演示 什么是java虚拟机(JVM)?什么是java的虚拟机实例?

何为实例:实例即对象。实例被用来模拟现实世界中存在的、具体的或原型的东西。

第一、写一个java主函数 Thread.sleep(10000000); sleep方法是程序休眠多少毫秒 在文本中编写 public class Hello{

public static void main(String[] args){
	try{
		Thread.sleep(10000000); 
	}catch(Exception e){
		
	}
	System.out.println("Hello");
}

}

第二、进入cmd 找到对应的java文件手动编译 ,

通过javac xxxx.java(Hello.java)编译

通过java xxxx(Hello) 运行

第三、打开任务管理器,看到一个叫java.exe的程序,这个就是java的虚拟机,java.exe这个命令就是用来启动一个java虚拟机,而main函数就是一个java应用的入口,main函数被执行时,java虚拟机就启动了。

第四、打开开发工具Myeclipse/elicpse 编写刚才的代码然后run application,再次run application 第五、再次打开任务管理器--进程 有两个javaw.exe,为什么会有两个?因为我们刚才运行了两次run application。这里我是要告诉你,一个java的application对应了一个java.exe/javaw.exe(java.exe和javaw.exe我们把它看成java的虚拟机一个个实例,区别就是一个有窗口界面一个没有)。你运行几个application就有几个java.exe/javaw.exe。或者更加具体的说,你运行了几个main函数就启动了几个java应用,同时也启动了几个java的虚拟机。 2.4.2总结: 1、java源程序(.java)通过javac命令编译源文件生成字节码文件(.class),再通过java命令启动JVM,JVM就会加载.class文件,最后运行.class文件。 2、java的虚拟机可以说相当于我们的一个java类,而java虚拟机实例,相当我们new一个java类,不过java虚拟机不是通过new这个关键字而是通过java.exe或者javaw.exe来启动一个虚拟机实例。 注意:java官方提供了不同平台JVM,但遵循相同的标准,效果相同,即我们所说的跨平台、前提标准.class。

cd 定位文件 2.5Eclipse简介 2.5.1Eclipse开发环境 1.3.1.Eclipse 是一个开放源代码的、基于Java的可拓展开发平台,是目前主流的IDE(集成开发环境)开发环境。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。Eclipse附带了一个标准的插件集,包括Java开发工具(JDK) 。 2.5.2Eclipse下载安装 Eclipse官网地址:www.eclipse.org/downloads ,免费的。下载完后不需要安装,因为本身也是Java语言制作的。但必须先安装JDK。 下载步骤: www.eclipse.org/downloads/e…

或者

还可以安装MyEclipse 3Java 变量 3.1变量 3.1.1变量定义 什么是变量 变量就是指在内存中开辟的存储空间,用于存放运算过程中需要用到的数据。 对于变量我们需要注意几个地方: 1、变量的声明:必须用特定的语法声明一个变量,让运行环境为其分配空间。 int/byte 2、变量的命名:变量最好要有个见名就知道意思的名字,而且要符合Java的规范。 3、变量的初始化:变量命名后,必须要为其赋一个初始值这样才能使用。int a = 0; 4、变量的访问:可以对变量中的数据进行存取,但是必须和其类型相同的数据操作。 3.1.2声明及初始化 在Java语言中,所有的变量在使用前必须声明。声明变量的基本格式如下: type identifier [ = value][, identifier [= value] ...] ; int a = 0 ,b= 2; 格式说明:type为Java数据类型。identifier是变量名。可以使用逗号隔开来声明多个同类型变量。 以下列出了一些变量的声明实例。注意包含了初始化过程。 int d = 3, e=0, f = 5; // 声明三个整数并赋予初值 double pi = 3.14159; // 声明了双精度浮点变量 pi char x = 'x';        // 声明变量 x 的值是字符 'x'。 3.1.3Java标识符,关键字 什么是标识符 Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。 关于Java标识符,有以下几点需要注意: 1、所有的标识符都应该以字母(A-Z或者a-z),美元符()、或者下划线(_)开始
2、首字符之后可以是任何字符的组合
3、关键字不能用作标识符,标识符是大小写敏感的
例如:MyFirstHello(驼峰命名法)
合法标识符举例:age、salary、_value 非法标识符举例:123abc、-salary

什么是关键字: 关键字是指java语言中预先定义的代表特定含义的字符。 不能用于常量、变量、和任何标识符的名称。如: public 、default 、 break 、 abstract 等。 3.1.4变量简单访问 变量只是存放数据的空间,可以对变量赋值,更改和操作,要把变量的操作理解为对其所存储的数据的操作。但操作的数据类型必须匹配。 eg:

       int  t = 50;
	t = t + 20;     //t = 70;
	System.out.println(t);

eg: int sal = 1500.50;//编译报错 double salary = 1500.6; int a = salary%2; //编译报错 3.1.5知识总结(得出基本语法) 编写Java程序时,应注意以下几点: 大小写敏感:Java是大小写敏感的,这就意味着标识符Hello与hello是不同的。 类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,eg: MyFirstJavaClass 。(驼峰命名法 ) 方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。(驼峰命名法 ) 源文件名:源文件名必须和类名相同。保存文件的时候,应该使用类名作为文件名保存(切记Java是大小写敏感的),文件名的后缀为.java。(如果文件名和类名不相同则会导致编译报错)。 主方法入口:所有的Java 程序由public static void main(String []args)方法开始执行。 3.2Java语言支持的变量类型 1、局部变量 2、成员变量(实例变量,引用变量) 3、类变量(静态变量) 3.2.1Java局部变量 1、局部变量声明在方法、构造方法或者语句块中; 2、局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁;(销毁是自动的,不需要我们考虑) 3、访问修饰符不能用于局部变量;int a = 0; 4、局部变量只在声明它的方法、构造方法或者语句块中可见; 5、局部变量是在栈上分配的。 6、局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。 7、局部变量在声明时在栈上并没有分配内存,真正的内存分配是在赋初值时进行的。 在例中age是一个局部变量。定义pupAge()方法中,它的作用域就限制在这个方法中。 案例演示: /**

  • 测试局部变量
  • @author Admin

*/ public class TestLocalVariable { public void pupAge(){ int age = 0; age = age + 7; System.out.println("小明的年龄是: " + age); } public static void main(String args[]){ TestLocalVariable test = new TestLocalVariable(); test.pupAge(); } } 3.2.2实例变量 1、实例变量声明在一个类中,在方法、构造方法和语句块之外; 2、一个对象被实例化后,每个实例变量的值就跟着确定; 3、实例变量在对象创建时创建,在对象被销毁的时销毁; 4、实例变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方式获取实例变量信息;实例变量可以直接通过变量名访问。 5、实例变量可以声明在使用前或者使用后; 6、访问修饰符可以修饰实例变量; 7、实例变量对于类中的方法、构造方法或者语句块是可见的。一般情况下应该把实例变量设为私有。通过使用访问修饰符可以使实例变量对子类可见 8、实例变量具有默认值。数值型变量的默认值是0,布尔型变量的默认值是false,引用类型变量的默认值是null。变量的值可以在声明时指定,也可以在构造方法中指定; 案例演示:

/**

  • 测试实例变量
  • @author Admin

*/ public class TestInstanceVariable {

public String name;  // 这个成员变量对子类可见 
private double salary; // 私有变量,仅在该类可见   
//在构造器中对name赋值   
public TestInstanceVariable (String empName){ 
	name = empName; 
} 
//编写sett方法
public void setSalary(double empSal){ //设定salary的值  
	this.salary = empSal;
}
//定义打印方法
public void printEmp(){ // 打印信息    
	System.out.println("name  : " + name );
	System.out.println("salary:"+salary);
} 
public static void main(String args[]){ 
	//实例化对象
	TestInstanceVariable empOne = new TestInstanceVariable("Ransika");
	//给变量赋值
	empOne.setSalary(1000); 
	//调用打印方法
	empOne.printEmp(); 
} 

} 3.2.3类变量(静态变量) 1、类变量也称为静态变量,在类中以static关键字修饰,但必须在方法构造方法和语句块之外。 2、无论一个类创建了多少个对象,类只拥有类变量的一份拷贝。 3、静态变量除了被声明为常量外很少使用。常量是指声明为public/private,final与static类型的变量。常量初始化后不可改变。 4、静态变量储存在静态存储区(JVM内存管理的方法区)。经常被声明为常量,很少单独使用static声明变量。 静态变量在程序开始时创建,在程序结束时销毁。 5、与实例变量具有相似的可见性。但为了对类的使用者可见,大多数静态变量声明为public类型。

6、默认值和实例变量相似。数值型变量默认值是0,布尔型默认值是false,引用类型默认值是null。变量的值可以在声明的时候指定,也可以在构造方法中指定。此外,静态变量还可以在静态语句块中初始化。 7、静态变量可以通过:ClassName.VariableName的方式访问。(类名.变量名) 8、类变量被声明为public static final类型时,类变量名称必须使用大写字母。如果静态变量不是public和final类型,其命名方式与实例变量以及局部变量的命名方式一致。

案例演示:

/**

  • 测试类的变量即静态变量
  • @author Admin */ public class TestStaticVariable { //salary是静态的私有变量 private static double salary; // DEPARTMENT是一个常量,不能在构造函数中初始化,因为赋值后是不可变 public static final String DEPARTMENT = "开发人员"; public TestStaticVariable(){ salary = 2.2; } public static void main(String[] args) { TestStaticVariable t = new TestStaticVariable(); double salary2 = TestStaticVariable.salary; System.out.println(salary2); } } 4Java 数据类型 4.1八大基本类型 内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存 该类型数据。int a = 1; float b = 3.0f; 因此,通过定义不同类型的变量,可以在内存中储存整数、小数或者字符。 Java的两大数据类型:

内置数据类型(默认的,原始的,基本的类型) 引用数据类型(在内存中存储的是引用地址)

Java提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。

4.1.1byte byte数据类型是8(bit)位、有符号的,以二进制补码表示的整数;1 Byte = 8bit 01010101 (8位) 00000110 最小值是-128(-2^7);不要要死记 最大值是127(2^7-1); 默认值是0; byte类型用在大型数组中节约空间,主要代替整数,因为byte变量占用的空间只有int类型的四分之一; 例子:byte a = 100,byte b = -50。 对于数值类型的基本类型的取值范围,我们无需强制去记忆,因为它们的值都已经以常量的形式定义在对应的包装类中了。 包装类Byte

       System.out.println("/**************byte类型的测试*****************/");
	//byte的最大值
	byte maxValue = Byte.MAX_VALUE;
	System.out.println(maxValue);
	//byte的最小值
	byte minValue = Byte.MIN_VALUE;
	System.out.println(minValue);
	byte b = 10;
	byte c = 12;
	System.out.println(b+","+c);

查看位数 //转成二进制,查看位数 String bb = Integer.toBinaryString(maxValue); System.out.println(bb); //查看位数 int size = Byte.SIZE; System.out.println(size);

二进制转十进制 //二进制转换十进制 byte re = (byte)Integer.parseInt(bb, 2); //- 256;
System.out.println(re);

4.1.2short short数据类型是16位、有符号的以二进制补码表示的整数; 默认值是0; 最小值是-32768(-2^15); 最大值是32767(2^15 - 1); Short数据类型也可以像byte那样节省空间。一个short变量是int型变量所占空间的二分之一; 例子:short s = 1000,short r = -20000。 System.out.println("/short类型的测试*/"); short maxValue2 = Short.MAX_VALUE; System.out.println(maxValue2); short minValue2 = Short.MIN_VALUE; System.out.println(minValue2); short t = 55; System.out.println(t); //查看二进制,以及位数 String binaryString = Integer.toBinaryString(maxValue2); System.out.println(binaryString);

4.1.3int(重点) int数据类型是32位、有符号的以二进制补码表示的整数;一般地整型变量默认为int类型;默认值是0; 最小值是-2,147,483,648(-2^31); 最大值是2,147,483,647(2^31 - 1); 例子:int a = 100000, int b = -200000。 包装类Integer System.out.println("/int类型的测试*/"); int maxValue3 = Integer.MAX_VALUE; System.out.println(maxValue3); int minValue3 = Integer.MIN_VALUE; System.out.println(minValue3); //查看二进制,以及位数 String binaryString2 = Integer.toBinaryString(maxValue3); System.out.println(binaryString2);

4.1.4long long数据类型是64位、有符号的以二进制补码表示的整数;默认值是0L;(?) 最小值是-9,223,372,036,854,775,808(-2^63); 最大值是9,223,372,036,854,775,807(2^63 -1); 这种类型主要使用在需要比较大整数的系统上; 例子: long a = 100000L,Long b = -200000L。 包装类Long System.out.println("/long类型的测试*/"); long maxValue4 = Long.MAX_VALUE; System.out.println(maxValue4); long minValue4 = Long.MIN_VALUE; System.out.println(minValue4); //查看二进制,以及位数 String binaryString3 = Long.toBinaryString(maxValue4); System.out.println(binaryString3);

4.1.5float(这个稍微用的少) float数据类型是单精度、32位、符合IEEE 754标准(IEEE二进位浮点数算术标准)的浮点数;默认值是0.0f; float在储存大型浮点数组的时候可节省内存空间; 浮点数不能用来表示精确的值,如货币; 例子:float f1 = 234.5f。最小值(1.4乘于10的负45次方) 包装类Float System.out.println("/float类型的测试*/"); float maxValue5 = Float.MAX_VALUE; System.out.println(maxValue5); //用高精度类型查看科学计数法 BigDecimal valueOf = BigDecimal.valueOf(maxValue5); System.out.println(valueOf.toPlainString());

	float minValue5 = Float.MIN_VALUE;
	BigDecimal bigf = BigDecimal.valueOf(minValue5);
	System.out.println(bigf.toPlainString());
	//查看位数
	System.out.println(Float.SIZE);

4.1.6double(重点) double数据类型是双精度、64位、符合IEEE 754标准的浮点数;默认值是0.0d; 浮点数的默认类型为double类型; double类型同样不能表示精确的值,如货币; 例子:double d1 = 123.4。 System.out.println("/double类型的测试*/");

	double maxValue6 = Double.MAX_VALUE;
	System.out.println(maxValue6);
	
	BigDecimal valueOf2 = BigDecimal.valueOf(maxValue6);
	System.out.println(valueOf2.toPlainString());
	
	double minValue6 = Double.MIN_VALUE;
	System.out.println(minValue6);
	//使用高精度转换成普通数据的展示
	BigDecimal valueOf3 = BigDecimal.valueOf(minValue6);
	System.out.println(valueOf3.toPlainString());
	int size2 = Double.SIZE;
	System.out.println(size2);

4.1.7boolean boolean数据类型表示一位的信息; 只有两个取值:true和false;默认值是false; 这种类型只作为一种标志来记录true/false情况; 例子:boolean one = true。(没有大小,值) System.out.println("/boolean类型的测试*/"); boolean true1 = Boolean.TRUE; System.out.println(true1); boolean false1 = Boolean.FALSE; System.out.println(false1);

4.1.8char char类型是一个单一的16位Unicode字符; 8位=一个字节 什么是Unicode编码:Unicode码也是一种国际标准编码,采用二个字节编码 Unicode字符通常用十六进制编码方案表示 最小值是’\u0000’(即为0); \u开头的是一个Unicode码的字符 最大值是’\uffff’(即为65,535); char数据类型可以储存任何字符;包装类是Character 例子:char letter = ‘A’。注意:必须用单引号。 char以数值形式而不是字符形式将Character.MIN_VALUE输出到控制台 如果要输入数值则 需要(int)强转 如果不强转则打印的空 System.out.println("/char类型的测试*/"); char maxValue7 = Character.MAX_VALUE; System.out.println((int)maxValue7); char minValue7 = Character.MIN_VALUE; System.out.println((int)minValue7); int size3 = Character.SIZE; System.out.println(size3); char maxcc = '\uffff';//16进制 最大值 char mincc = '\u0000'; System.out.println("char的最大值:"+maxcc); System.out.println("char的最大值:"+mincc);

总结注意:max_value,min_value ,size Integer, Character 4.2类型转换 4.2.1自动类型的转换 定义:自动类型转换,也称隐式类型转换,是指不需要书写代码,由系统自动完成的类型转换。由于实际开发中这样的类型转换很多,所以 Java 语言在设计时,没有为该操作设计语法,而是由 JVM 自动完成。

转换规则:从存储范围小的类型到存储范围大的类型。 具体规则为:byte→short(char)→int→long(64)→float(32)→double

也就是说 byte 类型的变量可以自动转换为 short 类型,示例代码: byte b = 10; short  sh  =  b;这里在赋值时,JVM 首先将 b 的值转换为 short 类型,然后再赋值给 sh。 在类型转换时可以跳跃。示例代码: byte b1 = 100;int n = b1; 注意问题:在整数之间进行类型转换时,数值不发生改变,而将整数类型,特别是比较大的整数类型转换成小数类型时,由于存储方式不同,有可能存在数据精度的损失。

同理: long num = 10000000000000L; float f1 = num; double dou = num; System.out.println(f1);

4.2.2强制类型转换 强制类型转换,也称显式类型转换,是指必须书写代码才能完成的类型转换。该类类型转换很可能存在精度的损失,所以必须书写相应的代码,并且能够忍受该种损失时才进行该类型的转换。 转换规则:从存储范围大的类型到存储范围小的类型。 具体规则为:double→float→long→int→short(char)→byte 语法格式为:(转换到的类型)需要转换的值 示例代码: double d = 3.10; int n = (int)d; System.out.println(n);//结果 3 这里将 double 类型的变量 d 强制转换成 int 类型,然后赋值给变量 n。需要说明的是小数强制转换为整数,采用的是“去 1 法”,也就是无条件的舍弃小数点的所有数字,则以上转换出的结果是 3。整数强制转换为整数时取数字的低位,例如 int 类型的变量转换为 byte 类型时,则只取 int 类型的低 8 位(也就是最后一个字节)的值。

       int  nn  =  123;
	byte  b  =  (byte)nn;
	System.out.println(b);
	
	int  m  =  1234;  //32
	byte  b1  =  (byte)m; //byte的最大值127
	//11010010  取反 加1  00101101
	//10101110          
	String binaryString = Integer.toBinaryString(b1);
	System.out.println(binaryString);
	System.out.println(b1);
	int parseInt = Integer.parseInt("-00101110", 2);
	System.out.println(parseInt);

则 b 的值还是 123,而 b1 的值为-46。b1 的计算方法如下:m 的值转换为二进制是10011010010,取该数字低8位的值作为b1的值,则b1的二进制值是11010010,按照机器数的规定,最高位是符号位,1代表负数,在计算机中负数存储的是补码(取反加1的规则),则该负数的原码是 00101110,该值就是十进制的-46。 注意问题:强制类型转换通常都会存储精度的损失,所以使用时需要谨慎。

4.3八大基本类型总结 Float和Double的最小值和最大值都是以科学记数法的形式输出的,结尾的"E+数字"表示E之前的数字要乘以10的多少次方。比如3.14E3就是3.14 × 103 =3140,3.14E-3 就是 3.14 x 10-3 =0.00314。 byte、char、short、三种类型参与运算时,先一律转换成int类型再进行运算。 实际上,JAVA中还存在另外一种基本类型void,它也有对应的包装类 java.lang.Void,不过我们无法直接对它们进行操作。 float强转为double时会输出怪异值,是因为十进制在转换为二进制的时候可能会不准确 4.4引用类型 定义:是一个对象类型,值是什么呢?它的值是指向内存空间的引用,就是地址,所指向的内存中保存着变量所表示的一个值或一组值。  String str = “123”; 在Java中,引用类型的变量非常类似于C/C++的指针。引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时被指定为一个特定的类型,比如Employee、Pubby等。变量一旦声明后,类型就不能被改变了。 对象、数组都是引用数据类型。 所有引用类型的默认值都是null。 一个引用变量可以用来引用与任何与之兼容的类型。 例子: String str = new String("我是String");

5作业: 作业前练习打字半个小时。--必须任务 1、Java平台分为哪几个版本? 2、int和Integer有什么区别? (编写到纸质笔记本) 3、Java中有哪些数据类型?有哪几种基本数据类型? 4、请写出Java中与基本数据类型相对应的封装类? 5、成员变量与类变量的区别 (总结题目:编写到纸质笔记本) 6、如果main方法被声明为private会怎样? 7、说明一下public static void main(String args[])这段声明里每个关键字的作用? 8、如果去掉了main方法的static修饰符会怎样? 9、你怎么理解变量? 10、简单的介绍下JVM是如何工作的?

注意:不知道的各种百度。

6附加思考知识: 引用传递 和 值传递 引用类型:除了在函数传值的时候是"引用传递",在任何用"="向对象变量赋值的时候都是"引用传递"。 值传递:基本类型的传递都属于值传递,和C语言一样,当把Java的基本数据类型(如 int,char,double等)作为入口参数传给函数体的时候,传入的参数在函数体内部变成了局部变量,这个局部变量是输入参数的一个拷贝,所有的函 数体内部的操作都是针对这个拷贝的操作,函数执行结束后,这个局部变量也就完成了它的使命,它影响不到作为输入参数的变量。这种方式的参数传递被称为"值 传递"。

爱好学习的宝宝们,可以找我。v:17711692868