书本中使用了设计衣服来定义类,一件衣服的设计Clothes定义了color和size两个变量,即java术语来讲,叫做定义两个值域成员,或叫做定义了两个对象数据成员。在下面有具体实例运行。html
具体编写步骤是:java
与此同时书本还介绍了另一种定义构造函数。构造函数是与类名称同名的方法。下面也有具体实例运行。git
具体编写步骤是:数组
以上的两种Clothes定义类的区别主要是:第一种方法在赋值前先创建了空的Clothes实例,而后在主函数里进行赋值操做;而第二种方法先在定义类的模块构造了函数,而后在后面的赋值中直接将对象代入函数完成赋值。app
在此小节中本书第一次出现了让用户进行输入,以前在学习c语言时,每一个程序在运行时基本都须要用户进行输入,再根据程序内容计算而后反馈给用户(除了一些显示图表的程序,例如:显示杨辉三角、九九乘法表)。在这里用户能够直接再ieda下方的程序框中输入。下面有猜数字的具体实例。函数
这个java.util.Scanner是一个标准类,是组成Java SE提供的标准API的许多种类之一。因为是系统自带的内容,因此在程序中能够直接使用,不须要像上一节的Clothes同样去定义。学习
第二种基本类型中使用1.0 - 0.8的结果不是2是由于Java遵照IEEE 754浮点数运算规范,使用分数与指数来表示浮点数,因此致使有无限循环,没法精确表示,于是形成运算偏差。本节就使用了一个标准类java.math.BigDecimal来解决,以默认的精度进行运算。下面是1.0 - 0.8的实例运行。this
Java并不是彻底的面向对象程序语言,在Java中有两大类型系统,即基本类型与类类型,因此必须区分=与==运算用于基本类型与类类型的不一样。.net
当=用于基本类型时,是将值赋值给变量,当==用于基本类型时,是比较两个变量储存的值是否相同。设计
int a = 28; int b = 22; int c = a; System.out.println(a == b); //判断a与b是否相等,这里显示False System.out.println(a == c); //判断a与c是否相等,这里显示True
当=用于对象时,是用在指定参考名称参考某个对象,而==是用在比较两个参考名称是否参考同一对象。
BigDecimal a = new BigDecimal("0.1"); //给a赋值0.1,即把a标签贴给"0.1" BigDecimal b = new BigDecimal("0.2"); //给b赋值0.1,即把b标签贴给"0.1",此"0.1"非彼"0.1" System.out.println(a == b); //判断a与b是否绑在同一个对象上,结果是False System.out.println(a.equal(b)); //判断a与b的赋值是否相等,结果是True
Java中有两个类型系统,即基本类型与类类型,使用基本类型目的在于效率,然而更多时候,会使用类创建实例,由于对象自己能够携带更多信息。若是要让基本类型像对象同样操做,可使用Long、Integer、Double、Float、Boolean、Byte等类来打包(Wrap)基本类型。具体实例以下。
具体编写步骤是:
这个程序中有两个操做:doubleValue()将打包值以double类型返回,以及compareTo()与另一个对象进行对比。这些都是包含在Integer中的方法,在打包器中能够直接使用。
J2SE 5.0之后Java提供了自动装箱和自动拆箱功能。因此能够这样打包基本类型和取出打包器中的基本形态信息:
Integer wrapper = 10; //自动装箱 int foo = wrapper; //自动拆箱
数组在Java中就是对象,因此前面介绍过的对象基本性质,在操做数组时也要注意,如参考名称声明、=指定的做用、==与!=的比较等。在Java中若是想要一次取出数组中每一个值,方法之一是使用for循环。下面是具体实例。
一维数组使用一个索引存取数组元素,你也能够声明二维数组,二维数组使用两个索引存取数组元素。下面是具体实例。
关于数组的表示,感受java语言和之前学的c语言有不少的共同之处,除了显示主函数、打印的代码不一样以外,我的感受非常十分类似的。
若是在创建数组前不知道元素值,只知道元素的个数,那可使用new关键词指定长度来创建数组。例如,预先创建长度为10的数组:
int[] scores = new int[10];
在Java中只要看到new,必定就是创建对象,这个语法表明了数组就是对象。使用new创建数组后,每一个索引元素会有默认值,以下表所示:
数据类型 | 初始值 |
---|---|
byte | 0 |
short | 0 |
int | 0 |
long | 0L |
float | 0.0F |
double | 0.0D |
char | \u0000 |
boolean | false |
类 | null |
下面是使用java.util.Arrays(即一种标准类,以前在类的感念中有涉及)中的fill()的方法来设定新建数组的元素值。例如,将每一个学生的成绩默认为60分起:
若是想在new数组中一并指定初始值,能够这样撰写:
int[] scores = new int[] {88, 81, 74, 68, 78, 76, 77, 85, 95, 93};
若是使用new配置二维数组后想要一并指定初始值,则能够这样撰写:
int[][] cords new int[][] { {1, 2, 3}, {4, 5, 6} };
没有人规定二维数组必定得是矩阵,也能够按照下面的方法创建不规则数组:
以上都是示范基本类型创建的数组,接下来介绍类类型创建的数组。下面是使用new关键词创建Integer数组:
Integer[] scores = new Integer[3];
若是要进行数组的复制,按照学习c语言的思路,在java中也一样适用。例如:
int[] score1 = {1, 2, 3, 4, 5}; int[] score2 = new int[score1.length]; for(int i = 0; i < score); i++) { score2[i] = score1[i]; }
可是java比c语言更高级的地方就是java内部有更多能够直接使用的函数,好比这里可使用的System.arraycopy()方法,这个方法会使用yuan原生方式复制每一个索引元素,比自行使用循环来得快:
int[] score1 = {1, 2, 3, 4, 5}; int[] score2 = new int[score1.length]; System.arraycopy(scores1, 0, scores2, 0, scores1.length);
同时书本还介绍了更方便得方法Arrays.copyOf()方法,能够不用零星创建新数组,Arrays.copyOf()会帮你创建。
在Java中,字符串是java.lang.String实例,用来打包字符数组。能够用""包括一串字符来创建字符串:
String name = "justin"; System.out.println(name); //显示justin System.out.println(name.length()); //显示字符串长度为6 System.out.println(name.charAt(0)); //显示第一个字符j System.out.println(name.toUpperCase()); //显示JUSTIN
若是要将字符串转换为整数、浮点数等基本类型,可使用下面表中类提供的剖析方法。
方法 | 说明 |
---|---|
Byte.parseByte(number) | 将number剖析为byte整数 |
Short.parseShort(number) | 将number剖析为Short整数 |
Integer.parseInteger(number) | 将number剖析为Inte整数 |
Long.parseLong(number) | 将number剖析为Long整数 |
Float.parseFloat(number) | 将number剖析为Float浮点数 |
Double.parseDouble(number) | 将number剖析为Double浮点数 |
下面这个实例可让用户输入整数,输入后会计算全部整数总和并显示:
这个程序中使用了以前章节提到过的import java.util.Scanner,便可以输入数据的标准类。
以Java的字符串来讲,就有一些必须注意的特性:
若是像比较对象实质内容是否相同,不要使用==,要使用 equal()。一样地,若是想要比较字符串实际字符内容知否相同,不要使用==,要使用 equal()。下面的程序片断执行结果都是true:
String name1 = "Justin"; String name2 = "Justin"; String name3 = new String("Justin"); String name4 = new String("Justin"); System.out.println(name1.equals(name2)); System.out.println(name1.equals(name3)); System.out.println(name3.equals(name4));
在Java中,字符串对象一旦创建,就没法更改对象中任何内容,对象上没有任何方法能够更改字符串内容。可是可使用+链接字符串。例如:
String name1 = "Java"; String name2 = name1 + "World"; System.out.println(name2);
运行的结果就会显示JavaWorld。
public为公开类,在构造函数上声明public class{}表示其余包中的类能够调用这个构造函数,private定义私有数据类型。用在成员变量前private class{}。
构造函数:在定义类时,可使用构造函数定义对象创建的初始流程。构造函数是与类名称同名,无需声明返回类型的方法。示例:
class name{ int a=0; String strs; name(int a,String strs){ this.a=a; this.strs=strs; } }
重载构造函数: 能够定义多个构造函数,只要参数类型不一样或者个数不一样。
public class name { int a=1; String strs ="strs"; public name(int a){ if(a>0){ this.a=a; } } public name(int a ,String strs ){ if(a>0){ this.a=a; } if(strs !=null){ this.strs=java; } } }
static类成员被声明为static的成员,不会让个别对象拥有,而属于类。在static方法或区块中,不能出现this关键字。static方法中不能使用非static数据或方法成员。
不定长度自变量
int...声明的变量实际上展开为数组;在使用不定长度自变量时,必须是参数列中的最后一个,使用两个以上不定长度自变量也是不合法的,使用对象的不定长度自变量不能和方法相同。
代码行数(新增积) | 博客量(新增积) | 学习时间(新增积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第三周 | 168/200 | 1/2 | 15/20 |
计划学习时间:20小时
实际学习时间:15小时