设置Java的相关路径,举例:

JAVA_HOME  -->   C:\Program Files\Java\jdk1.8.0_191

Path    --->   C:\Program Files\Java\jdk1.8.0_191\bin

  Java有编译型语言的特点,也有解释性语言的特点。在编写Java代码的时候,和编译型语言一样,需要指定变量的数据类型。而编写完的Java代码,经过编译之后,并不是生成在操作系统上直接运行的程序,而是生成一个字节码文件,该文件在虚拟机(JVM)中执行,而JVM就类似于其他语言的解析器(比如php、python的解析器),从这点来看,Java也包含动态语言的特点。

  所以“Java是静态编译型语言”这一说法也不完全正确

  Java使用16位的Unicode字符集作为编码方式,也就是说,Java的一个字符char占2个字节,而一个byte占1个字节,Java的byte相当于C/C++中char类型。

  其他语言中,无论什么数除以0,都会报错,并且抛出异常。

  而在Java中,浮点数可以除以0,如果是正浮点数除以0,结果是无穷大;负浮点数除以0,结果是无穷小;重点是不报错。只有当使用整数除以0的时候,在编译阶段也不会报错,只是会在运行的时候才报错。

  在Java中,Double和Float类都有POSITIVE_INFINITY和NEGATIVE_INFINITY两个属性值分别表示正无穷大和负无穷大。并且Double的正无穷和Float的正无穷相等(负无穷也一样相等)

  Java的类型自动转换和强制类型转换需要注意:

  1、自动类型转换时,小类型向大类型转换时,可以成功,不会出现问题;大类型转换为小类型时,因为java认为这样会存在精度损失,所以会报错。

  2、大类型自动转换为小类型失败,可以使用强制类型转换,这样就不会报错了。、

  3、进行强制转换时,有个例外,不能将其他类型强制转换为boolean类型。也不能将boolean类型强制转换为其他类型。

  "+"号有两大功能,一个是进行算术运算,另一个就是字符串拼接。

  有时候,这种情况表面上看来很像是字符串拼接,然而,它其实是算术运算:(char类型可以自动转换为int):

//注意下面这个表达式都是算术运算,而不是字符串拼接
3 + '4' + 5 == 60
'3' + '4' == 55

  而字符串拼接,一个很重要的标识就是双引号。

  另外,字符串拼接的时候,注意从左到右,一旦出现字符串,注意这里说的是字符串,一定是双引号括起来的字符串。一旦出现字符串后,之后就不会再进行算术运算了,只会进行最简单拼接操作,当然,如果使用括号来改变优先级还是可以的。

System.out.println(5 + 6 + "hello");  //11hello
System.out.println(5 + '6' + "hello");//59hello
System.out.println(5 + "hello" + 6); //5hello6
System.out.println("hello" + 5 + 6); //hello56

  

  Java语言的if选择结构,后面的判断表达式必须是boolean值,或者结果是boolean类型的值。不能是其他类型的值,因为前面已经说了,Java中的其他类型不能转换为boolean类型,即使是强制转换也不行。所以下面这个用法是错的:

int a = 5;
if (a) {
System.out.println("eeee");
}
//报错信息如下:
//错误: 不兼容的类型: int无法转换为boolean

  而switch却刚好和if条件表达式相反,switch的判断表达式可以是数字、字符串String类型的变量或者表达式,注意不能是字面值常量。

  在创建数组的时候,通过new关键字指定数组长度来动态初始化(未指定每一个元素的确定值),此时,有两种情况:

  1、如果数组元素的类型是基本数据类型(number类型),那么在动态初始化后,各数组元素值为类型零值(byte、short、int->0,float、double->0.0,char->''),在动态初始化后可以直接使用数组元素。

  2、如果数组元素的类型是引用类型,比如String,其他Class。那么使用new关键字动态初始化后,在未指定每个元素的确定值时,默认的零值是null。所以,此时不能直接访问数组元素的某一个属性,因为null没有属性。

double[] dArr = new double[4];
// 0.0 0.0 0.0 0.0 int[] iArr = new int[4];
// 0 0 0 0 String[] sArr = new String[4];
// null null null null Person[] pArr = new Person[4];
// null null null null System.out.println(sArr[0].length());
// 报错Exception in thread "main" java.lang.NullPointerException System.out.println(pArr[0].age);
// 也会报错Exception in thread "main" java.lang.NullPointerException sArr[0] = "hello world";
System.out.println(sArr[0].length);
//输出11

  所以,如果数组元素类型是引用类型的时候,不要尝试在未赋初始值的时候使用该元素。

  在Java中,如果只是定义了一个局部变量,但是没有为该局部变量赋值的话,那么访问该局部变量就会出错。比如下面的错误示例:

int i;
System.out.println(i); int[] arr;
System.out.println(arr.length); String s;
System.out.println(s); Person p;
System.out.println(p.name); 所有的报错信息如下:
Test.java:19: 错误: 可能尚未初始化变量i
System.out.println(i);
^
Test.java:22: 错误: 可能尚未初始化变量arr
System.out.println(arr.length);
^
Test.java:25: 错误: 可能尚未初始化变量s
System.out.println(s);
^
Test.java:28: 错误: 可能尚未初始化变量p
System.out.println(p.name);
^

  在定义局部变量后,在显式的初始化之后访问才不会出错。这是一个很容易忽略的问题,因为有些语言中,对于定义的局部变量,如果没有显式的初始化,那么就会变量的值就是该类型的零值。

Java语言的多态性的更多相关文章

  1. Java 语言多态性

    https://www.ibm.com/developerworks/cn/java/java-language-polymorphism/index.html 定义多态性 多态性是面向对象编程中的一 ...

  2. Java语言中的面向对象特性总结

    Java语言中的面向对象特性 (总结得不错) [课前思考]  1. 什么是对象?什么是类?什么是包?什么是接口?什么是内部类?  2. 面向对象编程的特性有哪三个?它们各自又有哪些特性?  3. 你知 ...

  3. 瘋耔java语言笔记

    一◐ java概述                                                                                        1.1 ...

  4. Java语言的特点

    一. 面向对象:其实是现实世界模型的自然延伸.现实世界中任何实体都可以看作是对象.对象之间通过消息相互作用.另外,现实世界中任何实体都可归属于某类事物,任何对象都是某一类事物的实例.如果说传统的过程式 ...

  5. 《JAVA语言程序设计》上课笔记

    教学目标:1.使学生了解JAVA课程的性质.定位.作用:为什么要学习JAVA?让学生知道如何学好JAVA: 教学内容: 一.        问几个问题 1.             你们到这里来干什么 ...

  6. java 学习笔记1 java语言概述及开发环境

    高级语言运行机制 高级语言按程序的执行方式分为编译型和解释型两种. java语言比较特殊,Java程序的执行必须经过先编译后解释的步骤. 1 编译生成字节码,只面向JVM(.class) 2Jvm执行 ...

  7. java基础---java语言概述

    一.计算机编程的两种范型 1.面向过程的模型---具有线性执行特点,认为是代码作用于数据. 2.面向对象的模型---围绕它的数据(即对象)和为这个数据定义的接口来组织程序:实际上是用数据控制代码的访问 ...

  8. 深入Java虚拟机:多态性实现机制——静态分派与动态分派

    方法解析 Class文件的编译过程中不包含传统编译中的连接步骤,一切方法调用在Class文件里面存储的都只是符号引用,而不是方法在实际运行时内存布局中的入口地址.这个特性给Java带来了更强大的动态扩 ...

  9. Java语言中的面向对象特性

    面向对象的基本特征 1.封装性 封装性就是把对象的属性和服务结合成一个独立的相同单位,并尽可能隐蔽对象的内部细节,包含两个含义: ◇ 把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位( ...

随机推荐

  1. 结对编程—黄金点游戏WinForm单机版

    本小游戏场景来自邹欣老师的<移山之道>一书: "阿超的课都是下午两点钟,这时班上不少的同学都昏昏欲睡,为了让大家兴奋起来,阿超让同学玩一个叫"黄金点"的游戏: ...

  2. JavaScript中的prototype使用说明

    参考 http://abruzzi.iteye.com/blog/1026125 http://www.jb51.net/article/23052.htm

  3. 关于listview视图的 作业

    代码运行目录 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android=& ...

  4. SpringMVC控制器与视图的数据交换

    1,先创建spring的主配置文件(applicationContaxt.xml如果写在WEB-INF下,就不用配置context了,就是不用告诉它路径了,WEB-INF会自动加载的),由监听器负责加 ...

  5. 《BI那点儿事》三国数据分析系列——蜀汉五虎上将与魏五子良将武力分析,绝对的经典分析

    献给广大的三国爱好者们,希望喜欢三国的朋友一起讨论,加深对传奇三国时代的了解 数据分析基础概念:集中趋势分析是指在大量测评数据分布中,测评数据向某点集中的情况.总体(population)是指客观存在 ...

  6. python打怪之路【第二篇】:ImportError: No module named setuptools

    在python安装第三方模块时出现如下错误: python错误:ImportError: No module named setuptools这句错误提示的表面意思是:没有setuptools的模块, ...

  7. hdu4352 XHXJ's LIS

    链接 这个题最不好想到的是状态的保存,也没有几亿的数组让你开,怎么保存前面出现了哪些数字. 题意让你求最长上升子序列的长度为k的数字的数目,可以是不连续的,可以保留一个状态栈,栈顶部依次更新,再保证长 ...

  8. transition&transform,CSS中过度和变形的设置

    设置样式的过度效果transition-property: none/all; transition-duration:2s;运动时间,默认是0秒 transition-delay:0s; 延迟时间默 ...

  9. Android 四大组件之三(广播)

    1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为Android组件间的通 ...

  10. linux -- 基于mysql tomcat 部署web项目

    一.导入数据库 二.配置web项目访问端口 vim /var/lib/tomcat8/conf/server.xml <Connector port=" protocol=" ...