一.1.java的三大体系是Java EE,Java SE,Java ME
2.java程序的运行环境简称为JRE
3.编译Java程序需要使用javac命令
4.javac.exe和java.exe 可执行程序文件存放在JDK安装目录下的bin目录下
5.path环境变量用来存储java的编译和运行工具所在的路径,classpath环境变量用来保存Java虚拟机要运行的“.class”文件路径。
二
1.通过Java虚拟机可以在不同的操作系统上运行Java程序,从而实现跨平台性。
2.JRE 包含了 Java 标准类库、Java 虚拟机(JVM)和一些其他必要的组件,开发工具另行下载。
3.Java中的包专门用来存放类的,通常功能相同的类存放在相同的包中。
4.Java.util包含Java中大量工具类,集合类等,例如Arrays,List,Set等。
5.Java是面向对象的语言,C语言是面向过程的语言。
三
1.Java编译器,运行工具,文档生成工具,打包工具属于JDK工具。
2.字节码文件可以在Java虚拟机中运行(后缀名.class)
3. javac.exe命令的作用是Java编译器。
4.如果jdk的安装路径为D:\jdk;命令行窗口使用java和javac命令可以运行任意位置的Java程序
环境变量path设置为D:\jdk\bin。
二java编程基础
1. int a[3][2] = {{1,2},{3,4},{5,6}},则a[2][1]=6
2.0xc5表示一个16进制整数。
3.java的基本数据类型有8种
boolean:一个字节,只有true和false两个值。
byte:一个字节
( char:两个字节
short:两个字节)
int :4个字节
long:8个字节
float:4个字节
double:8个字节(11224848)
方法重载:同一个类里面方法名称相同,但是方法的参数列表或这个数据类型不同
方法重写:在子类里面与父类方法的方法名称,参数列表,返回类型相同。
三.
1.面向对象的三大特征:封装,继承,多态
2.非静态成员方法中可以使用this关键字访问类的其他非静态成员。
3.java中针对类,成员方法和属性提供了public,private,protected,default四种访问级别。
4.声明构造方法时不能用private关键字修饰。
5.类中static修饰的变量或方法可以通过类名或者对象的引用变量来访问。
6静态代码块在类加载的过程中执行。
package noargs_succession_constructor;
public class Test {
public Test(){
System.out.println("这是示例一");
}
public Test(int a){
this();
System.out.println("这是示例二" );
}
public Test(boolean b){
this(1);
System.out.println("这是示例三");
}
public static void main(String[] args) {
Test test = new Test(true);
}
}
三个全部输出,this()调用第一个,this(1)调用第二个。
static关键字修饰成员变量,成员方法,代码块,不能修饰局部变量,不可以修饰类。
构造方法是类的一个特殊成员,实例化对象时自动调用,普通方法使用时调用,
定义的构造方法的方法名与类名相同,没有返回值的类型,方法体中不能用return语句返回一个值,但可以单独写return语句作为方法的结束。
封装:对象的属性和行为封装起来,不需要外界知道其中的具体实现细节
继承:无需编写原有类的基础上,对原来类的功能进行扩展。
多态:一个类的方法和属性被另一个类继承,子类对象直接复制给父类引用变量,相同类型的引用变量调用同一个方法呈现出的不同行为特性。
四.
1.一个类如果实现一个接口,需要实现接口中定义的全部方法,否则该类必须被定义成抽象类。
2.一个类可以从其他的类派生出来,派生出来的类被称为子类,用于派生的类被称为父类或超类。
3.java类用关键字final修饰不可以继承。
4.所有类直接或间接继承自Object类。
5.一个Lambda表达式由参数列表,"->",表达式主体构成。
Lambda 表达式是 Java 8 中引入的一种新特性,它可以用来简化代码并提高代码的可读性。Lambda 表达式本质上是一个匿名函数,它可以被看作是一种简化版的方法定义。
Lambda 表达式的语法非常简洁,它由三个部分组成:参数列表、箭头符号和方法体。例如,下面是一个 Lambda 表达式的示例:
```
(int x, int y) -> x + y
```
这个 Lambda 表达式的参数列表是 `(int x, int y)`,箭头符号是 `->`,方法体是 `x + y`。这个 Lambda 表达式的作用是将两个整数相加并返回结果。
Lambda 表达式可以用于函数式接口,函数式接口是只有一个抽象方法的接口。Lambda 表达式可以被看作是函数式接口中抽象方法的具体实现。例如,下面是一个函数式接口的示例:
```
interface MyInterface {
int add(int x, int y);
}
```
我们可以使用 Lambda 表达式来实现这个接口:
```
MyInterface myInterface = (int x, int y) -> x + y;
```
这个 Lambda 表达式的作用和上面的例子相同,它实现了 `MyInterface` 接口中的 `add` 方法。
Lambda 表达式可以用于简化代码,特别是在使用集合框架时。例如,下面是一个使用 Lambda 表达式的 for-each 循环的示例:
```
List list = Arrays.asList(1, 2, 3, 4, 5);
list.forEach((Integer i) -> System.out.println(i));
```
这个代码片段使用 Lambda 表达式来遍历一个整数列表并打印每个元素。
二。函数式接口在java中是指有且仅有一个抽象方法的接口。
在 Java 中,接口可以定义常量和方法,但是从 Java 8 开始,接口还可以定义默认方法和静态方法。
默认方法是指在接口中提供了一个默认的方法实现,如果实现类没有提供该方法的实现,就会使用接口中的默认实现。默认方法使用 `default` 关键字来修饰。例如:
```
public interface MyInterface {
default void myMethod() {
System.out.println("This is a default method.");
}
}
```
静态方法是指在接口中定义的类级别的方法,可以直接通过接口名来调用。静态方法使用 `static` 关键字来修饰。例如:
```
public interface MyInterface {
static void myStaticMethod() {
System.out.println("This is a static method.");
}
}
```
需要注意的是,接口中定义的静态方法只能通过接口名来调用,不能通过实现类的实例来调用。
除了常量、方法、默认方法和静态方法之外,接口还可以定义内部类、内部接口和枚举类型。但是,在实际开发中,这些用法并不常见。
super()关键字可以调用父类的构造方法和普通方法,super()和this()不能同时存在同一个构造方法。
解析:
在 Java 中,super() 和 this() 都是构造方法中的关键字,分别用于调用父类的构造方法和当前类的其他构造方法。在同一个构造方法中同时使用 super() 和 this() 是不允许的,因为这样会导致构造方法的调用顺序不明确,容易引起代码逻辑混乱和错误。
在 Java 中,构造方法的调用顺序是先调用父类的构造方法,再调用当前类的构造方法。如果在同一个构造方法中同时使用 super() 和 this(),就会产生歧义,无法确定应该先调用哪个构造方法,从而导致编译错误。
因此,如果需要在构造方法中调用父类的构造方法和当前类的其他构造方法,应该分别使用 super() 和 this(),并分别放在构造方法的第一行和第二行。这样可以保证构造方法的调用顺序明确,避免出现问题。
方法重写(覆盖):
在继承关系中,子类与父类的某一方法具有相同的方法名,参数列表,返回类型。
多态:父类变量引用子类对象,根据被引用对象的特性,程序会得到不同的运行结果。
java中static关键字修饰的类称为抽象类,不能被实例化,子类继承抽象类,实例化子类得到该抽象类的对象。接口是一种抽象类,接口只能定义常量,抽象方法,静态方法,默认方法。
五
1.在java中定义了StringBuffer,String两个封装类实现对字符串的操作。
2.JAVA中操作日期的类有Date,Calendar,DateFormat等。
3.System类中定义的属性和方法是静态的,引用这些属性和方法直接使用System类即可。
补充:
实际上,String对象和StringBuffer对象在Java中是两种不同的字符串类型,它们的创建和修改方式也不同。
String对象是不可变的,一旦创建后就不能修改。如果需要修改String对象,实际上是创建了一个新的String对象,而原来的String对象并没有被修改。例如:
```
String str = "hello";
str = str + " world";
```
在这个例子中,原来的字符串"hello"并没有被修改,而是创建了一个新的字符串"hello world"并将其赋值给了str变量。
相比之下,StringBuffer对象是可变的,可以进行修改。例如:
```
StringBuffer sb = new StringBuffer("hello");
sb.append(" world");
```
在这个例子中,我们使用了StringBuffer对象的append()方法来在原来的字符串"hello"后面添加一个空格和单词"world",这样就得到了一个新的字符串"hello world",而原来的StringBuffer对象也被修改了。
需要注意的是,StringBuffer是线程安全的,但是在单线程环境下,建议使用StringBuilder对象,因为它的性能更好。StringBuilder对象和StringBuffer对象的使用方式几乎相同,只是StringBuilder对象是非线程安全的。
是的,Java 中可以直接对字符数组进行赋值。下面是一个示例代码:
```java
char[] charArray = {'H', 'e', 'l', 'l', 'o'};
```
在这个示例中,我们定义了一个字符数组 `charArray`,并且直接对其进行了赋值。注意,赋值时需要使用花括号 `{}` 来包含所有的字符,字符之间用逗号 `,` 分隔。当然,也可以使用字符串来初始化字符数组,例如:
```java
char[] charArray = "Hello".toCharArray();
```
这个示例中,我们先将字符串 `"Hello"` 转换为字符数组,然后将其赋值给 `charArray`。