Class类出现问题:Implicit super constructor Object() is undefined for default constructor. Must define an explicit constructor
解决方法:工程上右键选Properties——>Java Build Path——>Libraries——>Add Library——>JRE System Library ——>Next——>Execution environment——>选择版本或workspace default jre——>Finish
public class ClassName /*关键字public称为访问修饰符,用于控制程序的其他部分对这段代码的{访问级别;
*关键字class表明Java程序中的全部内容都包含在类中;
*类名是首字母大写的名词, 如由多个单词组成,每个单词首字母均应大写(骆驼命名法:CamelCase)
public static void main(String[] args) *运行编译程序时,从main方法开始执行,每个Java应用程序必须有一个main方法,
*且必须声明为public
{ */
program statements
}
}
Java是一种强类型语言,必须为每一个变量声明一种类型。在Java中,一共8中基本类型,1种非基本类型(8+1String类)。
- 数值型包括整型和浮点型:整型:int 4字节 32位;short 2字节 16位;long 8字节 64位; byte 1字节 8位 。浮点型:float 4字节 32位;double 8字节 64位。
!警告:浮点数值不适用于禁止出现舍入误差的金融计算中,例如,命令System.out.println(2.0-1.1)将打印出0.899999999999999,而不是0.9,主要因为浮点数值采用二进制系统表示,而二进制系统中无法精确的表示1/10。类似于十进制无法精确表示1/3,如需要在数值计算中不含有任何舍入误差,使用BigDecimal类。
- 非数值类型:char;boolean(false&true);String
一个数据存储空间的表示,不同的数据存入具有不同的内存地址对应空间,相互独立,计算机中一块特定的内存空间,有一个或多个字节组成。在Java中,每一个变量属于一种类型(type)。在声明变量时,变量所属的类型位于变量名之前。
1、声明变量
DataType variableName; 数据类型 变量名;
2、变量初始化——声明一个变量后,必须用赋值语句对变量进行显式初始化。
常见错误和陷阱:
*未声明、未初始化的变量和未使用的变量 *赋值时溢出 Integer.MAX_VALUE Integer.MIN_VALUE
*取整错误 *冗余的输入对象
3、变量的命名
Java变量命名规则
首字母:字母、下划线、$ 小写,其他首字母大写
其他字母:字母、下划线、$和数字
关键字:不能当变量名(53个)
String nickName; //驼峰命名法 class Person; //帕斯卡命名法
注:变量名不要重复;一条语句可以声明多个同类型的变量:int i,j;见名知意;源代码文件名必须与公共类名相同
在Java中常用关键字final指示常量,如:
public class Constants
{
public static void main(String[] args)
{
final double CM_PER_INCH = 2.54;
double paperWidth = 8.5;
double paperHeught = 11;
System.out.println("Paper size in centimeters:"
+ paperWidth*CM_PER_INCH + "by" + paperHeight*CM_PER_INCH);
}
}
关键字final表示这个变量只能被赋值一次,一旦被赋值,就不能再更改。习惯上常量名使用全大写。在Java中,常希望某个常量可以在一个类中的多个方法中使用,常称为类常量。
public class Constants
{
public static final double CM_PER_INCH = 2.54;
public static void main(String[] args)
{
double paperWidth = 8.5;
double paperHeught = 11;
System.out.println("Paper size in centimeters:"
+ paperWidth*CM_PER_INCH + "by" + paperHeight*CM_PER_INCH);
}
}
需要注意,类常量的定义位于main方法的外部。因此,在同一个类的其他方法中也可以使用这个常量。而且,如一个常量被声明为public,那么其他类的方法也可以使用这个常量。
Java没有内置字符串类型,而是在标准java类库中提供了一个预定义类,即String。每个用双引号括起来的字符串都是String类的一个实例。
String类的 substring 方法可以从一个较大的字符串提取出一个子串。例:
String greeting = "Hello";
String s = greeting.substring(0,3);
创建了一个由“Hel”组成的字符串。substring 方法的第二个参数是不想复制的第一个位置,(0,3)复制的位置为0,1,2(从0到2,包括0和2)的字符。在substing中从0开始计数,直到3为止,但不包含3。.优点:易于计算子串长度,字符串s.substring(a,b)的长度为b-a。
+ 号连接(拼接)两个字符串
String expletive = "Expletive";
String PG13 = "deleted";
String message = expletive + PG13;
上述代码将“Expletivedeleted”赋给变量message(注意,单词之间没有空格, + 号按照给定的次序将两个字符串拼接起来)。
当将一个字符串与一个非字符串的值进行拼接时,后者将被转换成字符串(任何一个Java对象都可以转换成字符串)。
String类没有提供用于修改字符串的方法。。如希望将greeting的内容修改为“Help!”,不能直接地将greeting最后两个位置的字符修改为‘p’ 和‘!’。应先提取需要的字符,再拼接上替换的字符串:
greeting = greeting.sunstring(0,3) + "p!"; //将greeting当前值修改为“Helpl!”。
可以使用 equals 方法检测两个字符串是否相等。对于表达式:s.equals(t) 如果字符串 s 与 t 相等,则返回 true;否则,返回 false。需要注意,s 与 t 可以是字符串变量,也可以是字符串常量。例:“Hello”.equals(greeting) 。
要想检测两个字符串是否相等而不区分大小写,可以使用 equalsIgnoreCase 方法。一定不能使用 == 运算符检测两个字符串是否相等!
空串“”是长度为0的字符串。可以调用 if(str.length() == 0 或 if(str.equals("")) 检查一个字符串是否为空。
Null表示目前没有任何对象与该变量关联,可以用 if(str == null) 检查字符串是否为null。
检查一个字符串既不是null也不是空串,需用条件 if(str != null && str.length() !=0)
length方法返回采用UTF-16编码表示的给定字符串所需要的代码单元数量,例:
String greeting = "Hello";
int n = greeting.length(); //is 5
要想得到实际的长度,即代码点数量,可调用:int cpCount = greeting.codePointCount(0,greeting.length());
调用 s.charAt(n) 将返回位置 n 的代码单元,n 介于0 ~ s.length() - 1之间。例:
char first = greeting.charAt(0);//first is 'H'
char last = greeting.charAt(4); //last is 'o'
要想得到第i个代码点,应使用:
int index = greeting.offsetByCodePoints(0, i);
int cp = greeting.codePointAt(index);
代码点:对应各种真正字符(char不是真正的字符,是代码单元)的Unicode编码,是指编码字符集中,字符所对应的数字。有效范围从U+0000到U+10FFFF。其中U+0000到U+FFFF为基本字符,U+10000到U+10FFFF为增补字符。
代码单元:对代码点进行编码得到的1或2个16位序列(UTF-16)。其中基本字符的代码点直接用一个相同值的代码单元表示,增补字符的代码点用两个代码单元进行编码,编码值来自U+D800到U+DFFF,这个范围内没有数字用于表示字符,因此程序可以识别出当前字符是单单元的基本字符,还是双单元的增补字符。
如果想要遍历一个字符串,并且依次查看每一个代码点,可以使用:
int cp = sentence.codePointAt(i);
if(Character.isSupplementaryCodePoinit(cp)) i +=2;
else i++;
实现回退操作:
i--;
if(Character.isSurrogate(sentence.charAt(i)))
i--;
int cp = sentence.codePointAt(i);
如果需要用许多小段的字符串构建一个字符串,首先构建一个空的字符串构建器:StringBuilder builder = new StringBuilder();
当每次需要添加一部分内容时,调用 append 方法。
builder.append(ch);//appends is a single character
builder.append(str);//appends a string
在需要构建字符串时调用 toString 方法,得到一个String 对象,包含构建器中的字符序列。String completedString = builder.toString();