1 参考环境搭建
JRE(JAVA RUNTIME Environment):java运行环境
jre = jvm +java se 标准库类(java 核心库类)
JDK(JAVA Development Kit):java 开发工具
jdk= jre + 开发工具集(包括编译器,调试器)
只有jre,就只能运行开发好了的.class文件
环境配置:只需下载jdk,包含一个jre了,先安装jdk,途中也会安装jre,然后打开高级系统设置的环境变量中系统变量,先新建一个JAVA_HOME变量,放D:xxx\jdk1.8;然后打开系统变量的path变量,新建%JAVA_HOME%\BIN,然后就在cmd测试一下,class path那个不需要配置
path点击编辑展不开:
可能是两个%放在最前面删一个然后展开再新建回去
JAVA命名规范
java float 初始化值需要在数值后面加f,来区分double
还有浮点预算易出现误差
浮点运算结果出现误差原因分析及解决方案
Java引用数据类型
引用数据类型建立在基本数据类型的基础上,包括数组、类和接口。
引用类型还有一种特殊的 null类型。所谓引用数据类型就是对一个对象的引用,对象包括实例和数组两种。实际上,引用类型变量就是一个指针,只是 Java 语言里不再使用指针这个说法。
空类型(null type)就是 null 值的类型,这种类型没有名称。因为 null 类型没有名称,所以不可能声明一个 null 类型的变量或者转换到 null 类型。
空引用(null)是 null 类型变量唯一的值。空引用(null)可以转换为任何引用类型。
实际开发中,程序员可以忽略 null 类型,假定 null 只是引用类型的一个特殊直接量。
注意:空引用(null)只能被转换成引用类型,不能转换成基本类型,因此不要把一个 null 值赋给基本数据类型的变量。
参考网站
java的new关键字
Java关键字new是一个运算符。与+、-、*、/等运算符具有相同或类似的优先级。
1java的new作用是声明了一个对象后,给对象分配相应内存
2.创建一个Java对象需要三部:声明引用变量、实例化、初始化对象实例。
3.实例化:就是“创建一个Java对象”-----分配内存并返回指向该内存的引用。
4.初始化:就是调用构造方法,对类的实例数据赋初值。
java 中 输入字符串,单个字符,以及其他基本类型
canner cin = new Scanner(System.in);
next():它会一直从键盘中打入的内容直到读取到回车,此回车不会被读取,存在一个String类的对象
nextLine():和next()类似但是遇到空格会继续,直到读取大回车,内容存在string类的对象里
nextInt():取next(),然后把字符串解析成一个int数字。
Scanner类中没有定义读取char的方法,要读取char,我们使用next().charAt(0)。next()函数返回输入中的下一个标记/字符作为字符串,并且charAt(0)函数返回该字符串中的第一个字符。
注意输入数组后如果要输入字符串,需要再nextInt后面加一个nextline吃回车,不然输入字符串读不进去要输入的内容
参考:Scanner类中next系列方法的总结
参考:Scanner类nextInt方法的使用注意点
参考:Java中如何输入一个字符
Java 数组的声明、创建和初始化以及多维数组
1 声明数组变量
首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法
int [] a或者int a[]
2创建数组
Java语言使用new操作符来创建数组,语法如下:
a = new int[Size];
上面的语法语句做了两件事:
一、使用 int[Size] 创建了一个数组。
二、把新创建的数组的引用赋值给变量 a
3遍历数组 for-each
for(type element: array)
{
System.out.println(element);
}
4初始化数组(为数组对象的元素分配空间)
静态初始化 和 动态初始化
静态初始化是指由程序员在初始化数组时为数组每个元素赋值,由系统决定数组的长度。
数组的静态初始化有两种方式
1 array = new int[ ]{1,2,3,4,5};
2 int[ ] array = {1,2,3,4,5};
java中提供了一种创建数组对象并同时赋予初始值的简化书写形式。注意:在使用这种语句的时候,不需要调用new
上面的2种方式都可以实现数组的静态初始化,其中花括号包含数组元素值,元素值之间用逗号“,”分隔。此处注意只有在定义数组的同时执行数组初始化才支持使用简化的静态初始化。为了简便,建议采用第二种方式。
动态初始化
动态初始化是指由程序员在初始化数组时指定数组的长度,由系统为数组元素分配初始值。
数组动态初始化
int[ ] array = new int[10]; // 动态初始化数组
在数组声明的同时分配一块内存空间供该数组使用,其中数组长度是10,由于每个元素都为int型数据类型,因此上例中数组占用的内存共有10*4=40个字节。此外,动态初始化数组时,其元素会根据它的数据类型被设置为默认的初始值。本例数组中每个元素的默认值为0,不能再进行初始化
常见的数据类型默认值 :\u0000代表的是空字符,属于控制字符,也叫不可显字符
|byte | 0 |
|short | 0 |
|int | 0 |
|long | 0L |
|float | 0.0f |
|double | 0。0d |
|char | ‘\u0000’ |
|String (or any object) | null |
|boolean | false |
“\u0000”.length=1,而”“.length=0
当变量作为作为类成员使用时,java才确保给定其初始值,防止程序运行时错误。但是这些初始值对你的程序来说是不正确的。所以必须明确指定初始值。然而以上所诉并不适用于“局部”变量(即:非某个类的字段)。因此在某个方法中定义int i;
那么变量i可能得到的是任一值。不会被初始化为0。所以使用前先付一个适当的值。如果忘记了,java会在编译时返回一个错误。告诉你此变量没有初始化。在类中定义一个对象的引用时,如果没有给定初始化值,此引用会默认为null值。
参考网站
5多维数组
多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组
动态初始化
int [][] a=new int[length1][length2];
指定数组大小,必须注明最高维大小,可以不指明length2,但是分配空间时需要从最高维开始,分别为每一维分配空间,比如:
int[][][] arr = new int[2][][];
arr[0] = new int[3][3];
arr[1] = new int[][]{new int[]{1, 2}, new int[]{3, 4}, new int[3], {}};
Java赋值分配机制
1基本类型赋值机制
int n1=10;int n2=n1;n2=80;则输出n1,n2?
n1=10,n2=80 n2的变化不影响n1
基本数据类型赋值,赋值方式为值传递,这个值就是具体数据,不会相互影响
2数组赋值机制
int [] arr1={1,2,3};int [] arr2=arr1,arr2[0]=2;则arr1[0]?
arr1[0]=2;
数组在默认情况下赋值方式是引用传递,赋值的是地址
就 Java 语言本身来说,只有值传递,没有引用传递。
根据 值传递,引用传递的定义来说:
Java 中的基本类型,属于值传递。
Java 中的引用类型,属于引用传递。
String 与包装类作为引用类型,却有值传递的功能,不影响到实参!
道理是每次一个string重新赋值,相当于new string(“xx”),在string池开辟新对象 ,故形参保存的就是新的地址
值传递:指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,不会影响到实际参数。
引用传递:是指在调用函数时将实际参数的地址直接传递到函数中(的形参),那么在函数中对参数进行的修改,将影响到实际参数。
java里的值传递