JAVA基础 几个注意点

本文详细介绍了Java的基本概念,包括数据类型、基本语法、类与对象、泛型类与接口的使用等,同时涵盖了数组操作、字符串处理及异常处理等内容。
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用于方法的声明上,其后跟的是异常类名,后面可以跟多个异常类,之间用逗号隔开

throw用于方法体中,其后跟的是一个异常对象名


【原创】原创文章,更多关注敬请关注微信公众号。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值