本篇分享:
学习JAVA时的笔记
环境介绍:
系统:Windows
IDE:Eclipse
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextInt()) {
int a = in.nextInt();
int b = in.nextInt();
System.out.println(a + b);
}
}
}
true
、false
、null
myVariableName
studentName
代替sn
MAX_VALUE
类型 | boolean | byte | short | int | long | float | double | char |
---|---|---|---|---|---|---|---|---|
内存分配字节 | – | 1 | 2 | 4 | 8 | 4 | 8 | 2 |
给float
类型变量赋值时,数字末尾应该加上 f
或 F
表示这是一个float
类型的数值,而给double
类型变量赋值时,可以加上 d
或 D
表示这是一个double
类型的数值,也可以不加,因为没有加字母的浮点数默认为double
类型。
+
表连接作用,输出数值不需要""
final
System.out.print("")
Scanner
:import java.util.Scanner;
Scanner in = new Scanner(System.in);
in.next()
方法遇到空格会结束,使用in.nextLine()
方法遇到回车会结束public
-> 公共的,在任意一个地方可以访问private
-> 私有的,只可以在文件内部访问friendly
-> 可以在一个类里面访问import
(例如import java.util.Scanner
)。Java包内有util
这个包,util
内有Scanner
这个类。在类的属性中,含有static
的变量表示该变量为类变量,不属于类里的任何一个对象,可以直接使用(类名称.变量名)
调用。
static
函数只能调用static
函数,只能访问static
成员变量。
Java中关系判断(>、<、>=……
)的结果为true
或false
。Java中的true
字面值不等于1,false
字面值也不等于0。在Java中,它们只能分配给声明为boolean
的变量。在C语言中,为1或0。
数字/true
/false
与true
/false
之间不可比较大小,只能判断是否相等。
判断真假通常使用boolean
,定义:boolean 变量名 = true
或false
。boolean
的值只能是true
或false
。
浮点运算是有误差的:1.0
与十个0.1
相加不相等。因此,判断两个浮点数是否相等通常采用:
Math.abs(f1-f2)<1e-6
其中1e-6
为10
的-6
次方,即求两数的差距是否小于一个比较小的数字。
int[] 数组名 = new int[大小];
在Java内,定义一个普通变量可以存放数据,是数据的“所有者”。而定义一个数组时(比如说int[] a = new int[10]
),其中的数组名a
是这个数组的“管理者”,a
本身不可以存放数值。若定义(int[] b = a)
,即表示b
与a
共同管理一个数组,都为a
数组的管理者。因此,可以使用任意一个管理者对数组的值进行更改。
注意以下几点:
for (i = 0; i < 数组名.length; i++)
length
代表数组的元素数量。
for (类型 变量i : 数组名a) {
// 对于数组a内的每一个元素依次拿出来作为i
System.out.print(i);
}
Java中使用 new
创建的数组可以得到默认的0值,无需遍历赋初始值为0。
Java也可以像C语言一样直接初始化数组:
类型[] 数组名 = {1, 2, 3, ......};
使用标号可以结束内循环且不执行外循环后面的语句,即结束内循环直接进行下次外循环:
******:
// 外循环
for() {
// 内循环
for() {
if() {
// 结束内循环并执行下次外循环
continue ******;
}
}
System.out.print("Yes");
}
其中,******
为标号。
若在 for
内定义变量,则该变量为局部变量,离开 for
则不可以使用。例如:
for(int i = 1; i <= n; i++) {
// ...
}
Java中字符类型 char
大致与C语言相同。
除了 int
和 char
以外,Java中的包装类型就是把基本类型的名字的第一个字母大写。
boolean Boolean
char Character
byte Byte
short Short
int Integer
long Long
float Float
double Double
Integer.MAX_VALUE
、Integer.MIN_VALUE
static boolean isDigit(char ch)
、static boolean isLetter(char ch)
等static char toUpperCase(char ch)
、static char toLowerCase(char ch)
等Math类是Java中的一个标准类,它提供了一些常用的数学方法,例如绝对值、幂函数、三角函数等。
求一个数的绝对值可以使用Math类中的abs()方法,例如:
int a = -10;
int b = Math.abs(a); // b的值为10
求一个数的n次幂可以使用Math类中的pow()方法,例如:
double a = 2;
double b = Math.pow(a, 3); // b的值为8
生成一个0~1之间的随机数可以使用Math类中的random()方法,例如:
double a = Math.random(); // a的值为一个0~1之间的随机数
对一个小数进行四舍五入可以使用Math类中的round()方法,例如:
double a = 3.6;
int b = Math.round(a); // b的值为4
需要注意的是,round()方法的返回值是一个整数,因此会对小数进行取整操作。如果要对小数保留一定的位数,可以使用DecimalFormat类。
使用以下语法定义一个字符串变量:
String 变量名 = new String("a string");
这将执行以下步骤:
String
对象;s
,用于管理该对象;s
管理该对象。String
是一个类,字符串变量是对象的管理者而不是所有者,类似于数组。使用 +
可以连接两个字符串。如果 +
的一侧是字符串,而另一侧不是,则该侧将被转换为字符串,然后再进行连接。
使用以下语法读入一个字符串:
in.next()
:读入一个单词。单词的标志是空格(包括空格、制表符和换行符)。in.nextLine()
:读入一整行。char[] 数组名 = 字符串.toCharArray();
String 字符串 = new String(数组名);
使用以下语法定义一个字符串数组:
String[] 字符串 = new String[长度];
if (string == "bye")
或 if (string1 == string2)
:这样的比较是比较两个变量是否引用同一个字符串对象,而不是比较字符串的内容是否相同。if (string.equals("bye"))
:比较字符串 string
与括号内的字符串内容是否相同,判断两个字符串的内容是否相同。s.substring(n)
得到从n号位置到末尾的全部内容s.substring(b,e)
得到从b号位置到e号位置之前的内容(不含e号位)s.indexOf('c')
s.indexOf('c',n)
s.indexOf("t")
s.lastIndexOf('c')
, s.lastIndexOf('c',n)
, s.lastIndexOf("t")
switch(s)
{
case "this": ……;break;
case "that": ……;break;
}
if(string == "bye")
/ if(string1 == string2)
: 这样的比较是比较是否为同一个字符串,两个长相一样的人不是同一个人if(string.equals("bye"))
: 比较字符串string与括号内字符串内容是否相同,判断是否长得一样char [] 数组名= 字符串.toCharArray();
String 字符串 = new String(数组名)
使用 s.charAt(index)
函数,其中:
index
位置上的单个字符index
是 0,和数组一样s.length() - 1
使用 s.substring(n)
函数,其中:
n
号位置到末尾的全部内容s.substring(b, e)
返回从 b
号位置到 e
号位置之前的内容(不含 e
号位)使用以下函数来寻找字符:
s.indexOf('c')
找到 c
字符所在位置,如果不存在则返回 -1。s.indexOf('c', n)
从 n
号位置开始寻找 c
字符。s.indexOf("t")
找到字符串 "t"
所在位置。s.lastIndexOf('c')
从右边开始找到 c
字符所在位置,s.lastIndexOf('c', n)
从右边开始从第 n
号位置往左查找,s.lastIndexOf("t")
找到字符串 "t"
最后出现的位置。public static 返回类型 函数名(形参) {
函数主体
}
和C语言相同。
本地变量的生命周期和作用域都在声明它的花括号内,即块(block)内。
1.类是一种面向对象编程(OOP)的概念,包含属性和方法(或称为动作),用来描述某种事物或概念。 2.属于该类的对象具有该类的属性和方法,即可以通过对象来访问类的属性和方法。 3.创建对象的过程称为实例化,使用关键字new
,例如:ClassName obj = new ClassName();
,其中ClassName
为类名,obj
为对象名。 4.类是一个模板,对象是基于类创建出来的实例。 5.类定义了对象中所具有的属性,这些属性称作成员变量或实例变量。 6.类中的方法可以访问对象的成员变量,也可以对成员变量进行操作,每个对象都有自己的成员变量。
1.与类名字相同的函数为构造函数,在使用new
关键字实例化对象时自动调用该函数,用于初始化对象的属性。 2.一个类可以有多个构造函数,只要它们的参数列表不同,这被称为构造函数的重载(overloading)。 3.构造函数没有返回类型,包括void
,因为其返回的是新创建的对象的引用。 4.使用this()
关键字可以调用同一个类中的其他构造函数,但必须在构造函数内部的第一条语句中使用,例如this(param1, param2)
,其中param1
和param2
为其他构造函数的参数。
类类似于C语言中的结构体,但是它不仅可以包含数据成员,还可以包含成员方法。对象则是使用类模板创建出来的具体实例。
使用 System.out.println(container),Java 会默认调用容器类中的 toString() 方法来输出容器中的全部元素。
可以在容器类中定义 toString() 方法,以实现自定义的输出格式。例如:
public String toString() {
return String.format("%02d:%02d:%02d", hour, minute, second);
}
这里的 hour、minute、second 是容器类中的属性,这个方法返回一个字符串,以表达容器类中的对象按照指定格式输出的结果。
import java.util.ArrayList;
private ArrayList<String> 名称 = new ArrayList<String>();
注:ArrayList
表示字符串类型的数组列表。
import java.util.HashSet;
HashSet<String> 名称 = new HashSet<String>();
import java.util.HashMap;
1.所有东西都是以一对值放进去的,一个为key(键),一个为value(值) 2.取值需要对应的键 3.key的类型不可以是基本类型
private HashMap<key类型, value类型> 名称 = new HashMap<key类型, value类型>();
名称.put(key, value)
名称.get(key)
名称.containsKey(key)
存在即为true不存在即为flase
名称.keySet().size();
keySet()是Hash表中所有key的集合
for(key类型 变量1:Hash表名称.keySet())
{
value类型 变量2=Hash表名称.get(变量1);
System.out.println(变量2);
}
try catch
try {
// 可能会产生异常的代码
} catch (异常类型 变量e) {
// 处理异常的代码
}
System.out.println(e.getMessage()); // 输出异常对象里的一个数值
System.out.println(e); // 输出异常类的名字
e.printStackTrace(); // 输出异常在哪发生以及调用轨迹
throw e; // 抛出异常