————————————————————————————————————————————
预习:Java语言基础
-
Scanner s = new Scanner(System.in);
//System.in表示标准输入,通常指从键盘输入数据;
//System.out表示标准输出,通常指把数据输出到控制台或者屏幕;
//System.err表示标准错误输出,通常指把数据输出到控制台或者屏幕。 -
System.out.println();//末尾换行
System.out.print();//末尾不换行
System.out.printf();//格式化输出 -
【正确】The JVM will translate byte code into native code at class loading.
(JVM将在类加载时将字节代码转换为本机代码) -
【正确】 Each instruction is one byte only.(每条指令只包含一个字节。) 字节码指令详解
【正确】Byte code machine is a stack machine rather than a register machine.
(字节码机是堆栈机,而不是寄存器。)
(JVM是基于栈的虚拟机)
【正确】Languages other than Java can be compiled into byte code. -
【正确】The compiler generates native code for JIT JVM.
(编译器为JIT JVM生成本机代码。) -
【正确】The garbage collection will check for and free memory no longer needed.
(垃圾回收将检查并释放不再需要的内存。) -
Java语言的特点:面向对象、可移植、解释型
-
【正确】.java文件编译后,每一个class对应一个.class文件
【正确】Java源代码编译后产生的.class是字节码文件
【正确】.class文件在JVM上运行 -
在windows平台上安装配置JDK时,正确的是:
设置path的作用是指定命令搜索路径;
设置CLASSPATH的作用是指定类搜索路径;
javac的功能是编译出 .class文件;
假设JDK的安装位置是:c:\java,那么应在path中加入下面的数据项:c:\java\bin -
一个计算机上安装JDK后,计算机包含:JRE、JVM、javac.exe。
-
【正确】int is always 32-bit on different platforms(一个Int在不同的平台上总是32位的)
-
float a = 2.0f//定义float型时,末尾一定要加f。
-
double a=2.0//定义double类型时,不用加东西。
-
Java语言采用Unicode编码标准,每个Unicode码占16个比特。它为每个字符制订了一个唯一的数值,因此在任何的语言,平台,程序都可以放心的使用。
-
下面那个数据类型不属于原子数据类型?A.boolean B.char C.String D.byte
(这里的源自数据类型指的是基本数据类型,String不是基本数据类型,所以C错误) -
int类型数据的范围是 -2147483648 ~ 2147483647
-
Integer.MAX_VALUE//可以求int类型的最大值
-
Java的各种数据类型占用固定长度,与具体的软硬件平台环境无关。
-
Java语言中,变量名可以用汉字表示。
-
字节码文件是与平台无关的二进制码,执行时由解释器解释成本地机器码。
-
一个Java源文件中可以有多个类,但只能有一个类是public的。
-
如果Java源文件中包含了多个类,那么用编译器javac编译完源文件后将生成多个扩展名为.class的文件。
-
boolean型数据的值只有true和false。
—————————————————————————————————————————
实验一:Java语言基础
-
Java的switch语句中的变量类型只能为byte、short、int、char或者String类,不能是boolean。
-
break Loop1;//表示一次跳出Loop1:下面的循环体。不论有几层循环,都可以直接一次性跳出。
-
将字符串s转换为double类型的值d的语句(三种方法都可以):
d = Double.parseDouble(s);
d = (new Double(s)).doubleValue();
d = Double.valueOf(s).doubleValue(); -
Java中,如果基本数据没有初始化,它会自动初始化。
基本数据类型:
boolean—— false
char —— [](即null)
byte —— 0
short —— 0
int —— 0
long —— 0
float —— 0.0f
double —— 0.0
引用数据类型:初始化为null,例如String类 -
重载:方法名相同,但是参数的类型和个数不同
-
public static void main(String[] args){},若在此方法(函数)里面写其他方法(函数),必须写static,public可写可不写。
(写public指:所修饰的成员可以在任何类中都能被访问到。) -
in.hasNextInt(); //注意:in.hasNextInt()只进行判断,不读取
in.hasNextDouble();//判断是否是实型 -
System.exit(0);//结束整个程序
-
String[] s = str.split(",");//字符串以","进行分割,返回字符串数组
-
str1==str2;//判断字符串的地址是否一样;
str1.equals(str2);//判断字符串的内容是否一样 -
enum Grade {
A,B,C,D,E;
}//定义一个枚举类型,通过Grade.A进行访问。
System.out.println(Grade.classs);//class是一个类的属性,用来说明该类的一个对象,直接调用就可以了。 -
eclipse在编写代码的时候,就进行了编译。
运行的时候,才产生的错误是运行时错误。
—————————————————————————————————————————
实验二:面向对象基础——类和对象
-
关于封装与信息隐蔽:
A.在类外不能直接访问私有数据成员,但能通过调用公有成员函数引用、修改私有数据成员。
B.如果想修改或扩充类的功能,只需修改本类中有关的数据成员和与它有关的成员函数的实现,而关于该类的对象创建,成员函数调用等类外的代码部分可以不必修改。
C.如果在编译时发现类中的数据读写有错,不必检查整个程序,只需检查本类中访问这些数据的少数成员函数即可。
D.在设计类时,一般将数据成员声明为私有的,用set()、get()方法存取数据。 -
关于final关键字:
A.使用final声明的类不能有子类
B.使用final声明的方法不能被子类所覆盖
C.使用final声明的变量即为常量
D.使用final声明的类能被实例化 -
一个*.java文件中最多含有一个public类。
-
在Java中,一个类可同时定义许多同名的方法,这些方法的形式参数的个数、类型或顺序各不相同,传回的值也可以不相同,这种面相对象程序特性称为(重载 )。
-
下面( static)修饰符修饰的变量是所有同一个类生成的对象共享的。
-
一个对象是( 类 )的实例。
-
现有声明Circle x = new Circle(),这句是最确切的:x包含了一个Circle对象的引用。
-
设计类时:
定义私有属性:变量加了private,后面只能通过set和get函数设置和访问;
static a=0;//定义一个全局变量
无参构造方法:public 类名(){};//里面最好定义一个无参数的构造方法(防止后面出错);
含参构造方法:public 类名(){int a};//定义一个所有参数都初始化的构造方法;用到关键字this;
set()方法:用来存私有属性的值,不能加static
get()方法:用来取私有属性的值,不能加static
toString()方法:返回字符串
类的静态初始化块:static{语句;}
类的初始化块:{语句;} -
执行先后顺序:类的静态初始化块–>构造方法–>类的初始化块
—————————————————————————————————————————
实验三:面向对象基础——字符串
- (无)
- split()分割后,原字符串不变
- 要求字符串str里面不能含有非数字字符
num=Integer.parseInt(str);
num=Integer.valueOf(str); - str=str.trim();//删除头尾空白符的字符串。ps:不能删除中间的字符串
- char[] s=str.toCharArray();//字符串变成单个字符数组
- String类的字符串不能通过下标访问单个字符,即不能String s=“Hello”;char c=s[0];//会编译错误
- 可以通过str.charAt(index)访问字符串的某个字符,但是不能通过它改写字符。即只能访问不能改写。
- StringBuilder类的字符串反转reverse()方法:
StringBuffer bu=new StringBuffer(str);
str=bu.reverse().toString(); - 英文字母大写转小写用加法:c +=‘a’-‘A’;
英文字母小写转大写用减法:c -=‘a’-‘A’; - String newstr = str.toLowerCase();//使用toLowerCase()方法实现小写转换
String newstr2 = str.toUpperCase();//使用toUpperCase()方法实现大写转换 - /*从字符串中提取数字 */
public static String getNumeric(String str) {
str=str.trim();
String str2="";
if(str != null && !"".equals(str)){
for(int i=0;i<str.length();i ){
if(str.charAt(i)>=48 && str.charAt(i)<=57){
str2 =str.charAt(i);
}
}
}
return str2;
}
-
StringBuffer sb=new StringBuffer("");
sb.append(i);//在字符串的后面追加元素i;
sb.insert(6,"-");//在下标为6的位置插入字符’-’
str= sb.toString();//转化为字符串str -
字符串只比较内容是否一样用:str.equals(str1);
字符串忽略大小写比较:public boolean equalsIgnoreCase(String anotherString); -
in.nextLine();//可以过滤回车
-
str1=str.substring(6,14);//字符串截取:原始数组str并没有变
-
Arrays.sort(b);//数组排序,默认由小到大
-
str1.contains(str2)//字符串str1是否包含字符串str2,返回true或false
-
StringBuffer默认初始化的容量确实是16个字符。原因猜测:作者在平常使用过程中很少使用到16个字符以上的内容。8太小,易造成频繁扩容;32太大,扩容损耗大;权衡之后就去了16吧。StringBuffer在容量不够时会进行扩容操作。容量扩大为capacity*2+2在可以预估长度时,给个较大值,防止扩容导致频繁数组拷贝,产生内存垃圾
【作者:郭里奥
链接:https://www.zhihu.com/question/283546127/answer/432716437
来源:知乎。著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处】