int 整型 4 bytes
float 单精度浮点型 4 bytes 有效数字7位,双精度是15位
char 字符型 2 bytes
bool 布尔型 1 bit
public static void main(String[] args){
System.out.println("hello world");
}
public static void main(String[] args)
public:公共的意思,是最大权限修饰符。
static:由于jvm调用main方法的时候,没有创建对象。
只能通过类名调用。所以,main必须用static修饰。
void:由于main方法是被jvm调用,不需要返回值。用void修饰。
main:main是主要的意思,所以jvm采用了这个名字。是程序的入口。
String[]:字符串数组
args:数组名
自动转换按从低到高的顺序转换。不同类型数据间的优先关系如下:
低--------------------------------------------->高
byte,short,char-> int -> long -> float -> double
强制转换的格式是在需要转型的数据前加上“( )”,然后在括号内加入需要转化的数据类型。
x = (int)34.56 + (int)11.2; // 丢失精度 //45
y = (double)x + (double)10 + 1; // 提高精度 //56.0
Java条件运算符(三目运算符):
condition ? x1 : x2
condition为一个boolean值。根据condition,取x1或x2的值。
println() 输出内容后换行。
print() 不换行。
printf() 控制输出格式。
Scanner 类 //用户输入
Scanner sc = new Scanner(System.in);
int year = sc.nextInt();
int month = sc.nextInt();
说明:
sc.nextInt();获取整型数据
sc.nextLine();获取字符串数据
System.in(标准输入),通常代表键盘输入。
System.out(标准输出):通常写往显示器。
System.err(标准错误输出):通常写往显示器。
数组: type arrayName[];
int intArray[] = new int[5]; //通过new关键字分配内存空间
foreach循环 数组遍历:
int arrayDemo[] = {1, 2, 4, 7, 9, 192, 100};
for(int x: arrayDemo){
System.out.println(x + ", ");
}
静态数组一旦声明后容量有限,生产环境中经常使用数组列表(ArrayList,也称动态数组)或向量(Vector)。
String字符串与数组有一个共同点,就是它们被初始化后,长度是不变的,并且内容也不变。
str.length() //字符串长度
str.charAt(0) //通过索引获取字符串指定字符
str.contains("yuan")contains() //方法用来检测字符串是否包含某个子串
str.replace("weixueyuan", "微学苑") //字符串替换,用来替换字符串中所有指定的子串
//指定字符串作为分隔符,对当前字符串进行分割,分割的结果是一个数组
import java.util.*;
public class Demo {
public static void main(String[] args){
String str = "wei_xue_yuan_is_good";
String strArr[] = str.split("_");
System.out.println(Arrays.toString(strArr));
}
}
StringBuffer 默认分配16字节长度的缓冲区,当字符串超过该大小时,会自动增加缓冲区长度,而不是生成新的对象。只能通过 new 来创建对象.
str.append(true) //append() 方法用于向当前字符串的末尾追加内容
str.deleteCharAt(3) //deleteCharAt() 方法用来删除指定位置的字符,并将剩余的字符形成新的字符串。
str.insert(3, "xyz"); //insert() 用来在指定位置插入字符串。
str.setCharAt(3, 'z'); //setCharAt() 方法用来修改指定位置的字符.
强烈建议在涉及大量字符串操作时使用StringBuffer,执行效率要明显高于string
StringBuffer、StringBuilder、String中都实现了CharSequence接口。
StringBuffer:线程安全
StringBuilder:线程不安全
操作少量的数据使用 String;
单线程操作大量数据使用 StringBuilder;
多线程操作大量数据使用 StringBuffer。
类必须先定义才能使用。类是创建对象的模板,创建对象也叫类的实例化。
类变量和成员变量区别,类变量必须是static类型。
在类实例化的过程中自动执行的方法叫做构造方法,构造方法的名称必须与类的名称相同,并且没有返回值。
equals() 和“==”进行比较的时候,引用类型数据比较的是引用,即内存地址,基本数据类型比较的是值。
equals()方法只能比较引用类型,“==”可以比较引用类型及基本类型。obj1.equals(obj2);
Object 类中实现的 toString() 方法是返回当前对象的类型和内存地址信息。
使用 abstract 修饰符来表示抽象方法和抽象类。抽象类不能直接使用,必须用子类去实现抽象类,然后使用其子类的实例。
// 共有的 setter 和 getter 方法
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
泛型类(Java Class):可以接受任意类型的数据。
// 定义泛型类
class Point<T1, T2>{
T1 x;
T2 y;
public T1 getX() {
return x;
}
public void setX(T1 x) {
this.x = x;
}
public T2 getY() {
return y;
}
public void setY(T2 y) {
this.y = y;
}
// 定义泛型方法
public <T1, T2> void printPoint(T1 x, T2 y){
T1 m = x;
T2 n = y;
System.out.println("This point is:" + m + ", " + n);
}
}
//定义泛型接口
interface Info<T> {
public T getVar();
}
//实现接口
class InfoImp<T> implements Info<T> {
private T var;
// 实例化泛型类
Point<Integer, Integer> p1 = new Point<Integer, Integer>();
p1.setX(10);
p1.setY(20);
int x = p1.getX();
int y = p1.getY();
System.out.println("This point is:" + x + ", " + y);
<T1, T2>,T1, T2 是自定义的标识符,也是参数,用来传递数据的类型,而不是数据的值,我们称之为类型参数。
泛型类在实例化时必须指出具体的类型,也就是向类型参数传值,格式为:
className variable<dataType1, dataType2> = new className<dataType1, dataType2>();
单线程系统的处理途径是使用一种叫作轮询的事件循环方法。
线程状态:
运行(running)
挂起(suspend)
恢复(resume)
阻塞(block)
终止(terminate)
线程的优先级是用来决定何时从一个运行的线程切换到另一个。这叫“上下文转换”(context switch)。
Thread类
getName 获得线程名称
getPriority 获得线程优先级
jsAlive 判定线程是否仍在运行
join 等待一个线程终止
run 线程的入口点.
sleep 在一段时间内挂起线程
start 通过调用运行方法来启动线程
必须先调用方法currentThread()获得它的一个引用,然后才能控制主线程。
TCP/IP分为四个层次:
网络接口层:负责接收和发送物理帧;
网络层:负责相邻节点之间的通信;
传输层:负责起点到终点的通信;
应用层:提供诸如文件传输、电子邮件等应用程序。
IP地址用于指明因特网上的一台计算机在网络中的地址,用32位二进制代码表示一个网络地址。地址分A、B、C、D、E五类,常用的是A、B、C三类:
A(1.0.0.0-126.255.255.255):0,7位网络号,后24位为主机号;
B(128.0.0.0-191.255.255.255):10,14位网络号,后16位为主机号;
C(192.0.0.0-223.255.255.255):110,21位网络号,后8位为主机号;
D(224.0.0.0-239.255.255.255):1110,28位多点广播组标号;
E(240.0.0.0-254.255.255.255):1111,保留试验使用。
内存结构
栈内存:用于存储局部变量,当数据使用完,所占空间会自动释放。
堆内存:数组和对象,通过new建立的实例都存放在堆内存中。
异常:
Exception和RuntimeException的区别
A:Exception:一般性的错误,是需要我们编写代码进行处理的。
B:RuntimeException:运行时异常,这个我们也不需要处理。
throws和throw的区别
A:有throws的时候可以没有throw。
有throw的时候,如果throw抛的异常是Exception体系,那么必须有throws在方法上声明。
B:throws用于方法的声明上,其后跟的是异常类名,后面可以跟多个异常类,之间用逗号隔开
float 单精度浮点型 4 bytes 有效数字7位,双精度是15位
char 字符型 2 bytes
bool 布尔型 1 bit
public static void main(String[] args){
System.out.println("hello world");
}
public static void main(String[] args)
public:公共的意思,是最大权限修饰符。
static:由于jvm调用main方法的时候,没有创建对象。
只能通过类名调用。所以,main必须用static修饰。
void:由于main方法是被jvm调用,不需要返回值。用void修饰。
main:main是主要的意思,所以jvm采用了这个名字。是程序的入口。
String[]:字符串数组
args:数组名
自动转换按从低到高的顺序转换。不同类型数据间的优先关系如下:
低--------------------------------------------->高
byte,short,char-> int -> long -> float -> double
强制转换的格式是在需要转型的数据前加上“( )”,然后在括号内加入需要转化的数据类型。
x = (int)34.56 + (int)11.2; // 丢失精度 //45
y = (double)x + (double)10 + 1; // 提高精度 //56.0
Java条件运算符(三目运算符):
condition ? x1 : x2
condition为一个boolean值。根据condition,取x1或x2的值。
println() 输出内容后换行。
print() 不换行。
printf() 控制输出格式。
Scanner 类 //用户输入
Scanner sc = new Scanner(System.in);
int year = sc.nextInt();
int month = sc.nextInt();
说明:
sc.nextInt();获取整型数据
sc.nextLine();获取字符串数据
System.in(标准输入),通常代表键盘输入。
System.out(标准输出):通常写往显示器。
System.err(标准错误输出):通常写往显示器。
数组: type arrayName[];
int intArray[] = new int[5]; //通过new关键字分配内存空间
foreach循环 数组遍历:
int arrayDemo[] = {1, 2, 4, 7, 9, 192, 100};
for(int x: arrayDemo){
System.out.println(x + ", ");
}
静态数组一旦声明后容量有限,生产环境中经常使用数组列表(ArrayList,也称动态数组)或向量(Vector)。
String字符串与数组有一个共同点,就是它们被初始化后,长度是不变的,并且内容也不变。
str.length() //字符串长度
str.charAt(0) //通过索引获取字符串指定字符
str.contains("yuan")contains() //方法用来检测字符串是否包含某个子串
str.replace("weixueyuan", "微学苑") //字符串替换,用来替换字符串中所有指定的子串
//指定字符串作为分隔符,对当前字符串进行分割,分割的结果是一个数组
import java.util.*;
public class Demo {
public static void main(String[] args){
String str = "wei_xue_yuan_is_good";
String strArr[] = str.split("_");
System.out.println(Arrays.toString(strArr));
}
}
StringBuffer 默认分配16字节长度的缓冲区,当字符串超过该大小时,会自动增加缓冲区长度,而不是生成新的对象。只能通过 new 来创建对象.
str.append(true) //append() 方法用于向当前字符串的末尾追加内容
str.deleteCharAt(3) //deleteCharAt() 方法用来删除指定位置的字符,并将剩余的字符形成新的字符串。
str.insert(3, "xyz"); //insert() 用来在指定位置插入字符串。
str.setCharAt(3, 'z'); //setCharAt() 方法用来修改指定位置的字符.
强烈建议在涉及大量字符串操作时使用StringBuffer,执行效率要明显高于string
StringBuffer、StringBuilder、String中都实现了CharSequence接口。
StringBuffer:线程安全
StringBuilder:线程不安全
操作少量的数据使用 String;
单线程操作大量数据使用 StringBuilder;
多线程操作大量数据使用 StringBuffer。
类必须先定义才能使用。类是创建对象的模板,创建对象也叫类的实例化。
类变量和成员变量区别,类变量必须是static类型。
在类实例化的过程中自动执行的方法叫做构造方法,构造方法的名称必须与类的名称相同,并且没有返回值。
equals() 和“==”进行比较的时候,引用类型数据比较的是引用,即内存地址,基本数据类型比较的是值。
equals()方法只能比较引用类型,“==”可以比较引用类型及基本类型。obj1.equals(obj2);
Object 类中实现的 toString() 方法是返回当前对象的类型和内存地址信息。
使用 abstract 修饰符来表示抽象方法和抽象类。抽象类不能直接使用,必须用子类去实现抽象类,然后使用其子类的实例。
// 共有的 setter 和 getter 方法
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
泛型类(Java Class):可以接受任意类型的数据。
// 定义泛型类
class Point<T1, T2>{
T1 x;
T2 y;
public T1 getX() {
return x;
}
public void setX(T1 x) {
this.x = x;
}
public T2 getY() {
return y;
}
public void setY(T2 y) {
this.y = y;
}
// 定义泛型方法
public <T1, T2> void printPoint(T1 x, T2 y){
T1 m = x;
T2 n = y;
System.out.println("This point is:" + m + ", " + n);
}
}
//定义泛型接口
interface Info<T> {
public T getVar();
}
//实现接口
class InfoImp<T> implements Info<T> {
private T var;
// 实例化泛型类
Point<Integer, Integer> p1 = new Point<Integer, Integer>();
p1.setX(10);
p1.setY(20);
int x = p1.getX();
int y = p1.getY();
System.out.println("This point is:" + x + ", " + y);
<T1, T2>,T1, T2 是自定义的标识符,也是参数,用来传递数据的类型,而不是数据的值,我们称之为类型参数。
泛型类在实例化时必须指出具体的类型,也就是向类型参数传值,格式为:
className variable<dataType1, dataType2> = new className<dataType1, dataType2>();
单线程系统的处理途径是使用一种叫作轮询的事件循环方法。
线程状态:
运行(running)
挂起(suspend)
恢复(resume)
阻塞(block)
终止(terminate)
线程的优先级是用来决定何时从一个运行的线程切换到另一个。这叫“上下文转换”(context switch)。
Thread类
getName 获得线程名称
getPriority 获得线程优先级
jsAlive 判定线程是否仍在运行
join 等待一个线程终止
run 线程的入口点.
sleep 在一段时间内挂起线程
start 通过调用运行方法来启动线程
必须先调用方法currentThread()获得它的一个引用,然后才能控制主线程。
TCP/IP分为四个层次:
网络接口层:负责接收和发送物理帧;
网络层:负责相邻节点之间的通信;
传输层:负责起点到终点的通信;
应用层:提供诸如文件传输、电子邮件等应用程序。
IP地址用于指明因特网上的一台计算机在网络中的地址,用32位二进制代码表示一个网络地址。地址分A、B、C、D、E五类,常用的是A、B、C三类:
A(1.0.0.0-126.255.255.255):0,7位网络号,后24位为主机号;
B(128.0.0.0-191.255.255.255):10,14位网络号,后16位为主机号;
C(192.0.0.0-223.255.255.255):110,21位网络号,后8位为主机号;
D(224.0.0.0-239.255.255.255):1110,28位多点广播组标号;
E(240.0.0.0-254.255.255.255):1111,保留试验使用。
内存结构
栈内存:用于存储局部变量,当数据使用完,所占空间会自动释放。
堆内存:数组和对象,通过new建立的实例都存放在堆内存中。
异常:
Exception和RuntimeException的区别
A:Exception:一般性的错误,是需要我们编写代码进行处理的。
B:RuntimeException:运行时异常,这个我们也不需要处理。
throws和throw的区别
A:有throws的时候可以没有throw。
有throw的时候,如果throw抛的异常是Exception体系,那么必须有throws在方法上声明。
B:throws用于方法的声明上,其后跟的是异常类名,后面可以跟多个异常类,之间用逗号隔开
throw用于方法体中,其后跟的是一个异常对象名
【原创】原创文章,更多关注敬请关注微信公众号。