J2SE基础
数据类型
1.基本数据类型
2.引用类型
String不是基本类型,它是一个类
进制:二进制0b开头,八进制0开头,十六进制0x开头
long后面加L,float后面加f
Ctrl+d:复制当前行内容到下一行
可以用逗号隔开以声明多个同类型的变量
幂运算:double p = Math.pow(3,2); //p=9
加号+在输出语句中作字符串连接符:凡是语句中先出现了字符串,就把所有变量作为字符串拼接起来输出:
int a=10,b=20; System.out.println(""+a+b); //1020 System.out.println(a+b""+); //30
变量
- 类变量:关键字static修饰(又叫静态变量),
- 实例变量:方法的外面,类的里面。从属于对象,可以不进行初始化,因为有默认值:
数值型为0或0.0,Boolean为false,除了基本类型的其他都为null
- 局部变量:只作用于方法内部,必须声明和初始化值
常量
关键字final修饰,程序运行过程中值不可变,常量名一般用大写字母
修饰符顺序可以变:final static double PI = 3.14; static final double PI = 3.14;
命名规范
- 类成员变量:首字母小写和驼峰原则:monthSalary
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线:MAX_VALUE
- 类名:首字母大写和驼峰原则:Man,GoodMan
- 方法名:首字母小写和驼峰原则:run(), runRun()
JavaDoc
Javadoc是一种将注释生成HTML文档的技术,生成的HTML文档类似于java的API。
生成方法:
- 命令行:javadoc 参数 文件
javadoc -encoding UTF-8 -charset UTF-8 Demo05.java
- IDEA:tools
Generate JavaDoc
用户交互Scanner
Java提供的工具类,可以获取用户的输入,类似C语言中的scanf。简单来说,Scanner就是用来获取用户在控制台输入的字符串,也可以获取一个文件中的字符串。
引入包java.util.Scanner
//基本语法: Scanner s = new Scanner(System.in);
通过Scanner类的next()与nextline()方法获取输入的字符串,在读取之前一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据。
//next() package com.kuang.scanner; import java.util.Scanner; public class Demo01 { public static void main(String[] args) { //创建一个扫描器对象,用于接收键盘数据 Scanner scanner = new Scanner(System.in); System.out.println("使用next方法接收:"); //判断用户有没有输出字符串 if (scanner.hasNext()){ String str = scanner.next(); System.out.println("输出的内容为:"+str); } //io流的类 养成用后即关的习惯 scanner.close(); } }
//nextline() package com.kuang.scanner; import java.util.Scanner; public class Demo02 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("使用nextLine方式接收:"); //判断用户是否输入字符串 if (scanner.hasNext()){ String str = scanner.nextLine(); System.out.println("输出的内容为:"+str); } scanner.close(); } }
next()和nextLine()的区别:
增强型for循环
主要用于数组或集合
for (声明语句:表达式) { //执行体 }
- 声明语句:声明新的局部变量,其类型必须和数组元素的类型匹配,作用域限定在循环语句块,其值与此时数组元素的值相等。
- 表达式:要访问的数组名,或返回值为数组的方法。
方法的重载
在一个类中的方法有相同的名称,但形参不同。规则: - 参数列表可以是个数不同、类型不同、参数排列顺序不同
- 返回类型可以相同也可以不同
- 但返回类型不同不足以构成方法的重载
数组
- 先声明
dataType[] arrayRefVar;
- 用new创建数组
dataType[] arrayRefVar = new dataType[arraySize];
内存分析
- 堆
- 存放new的对象和数组
- 可以被所有的线程共享,不会存放别的对象引用
- 栈
- 存放基本变量类型(会包含这个基本类型的具体数值)
- 引用对象的变量(会存放这个引用在堆中的具体地址)
- 方法区
- 可以被所有的线程共享
- 包含了所有的class
初始化
动态初始化
静态初始化
默认初始化:数组是引用类型,其元素相当于类的实例变量,因此数组一经分配空间,其每个元素也被按照实例变量的方式被隐式初始化:数值型为0或0.0,Boolean为false,除了基本类型的其他都为null
public class Demo01 { public static void main(String[] args) { //静态初始化 int[] a = {1,2,3,4,5}; a[2] = 11; System.out.println(a[2]); //动态初始化 int[] b = new int[5]; b[3] = 6; for (int i = 0; i < b.length; i++) { System.out.println(b[i]); } } } //输出:11 0 0 0 6 0
Arrays类
- java.util.Arrays
- Arrays类中的方法都是静态方法,直接使用类名调用,所以可以不用通过对象名调用
- 常用方法:
- fill()方法给数组赋值
- sort()方法升序排序
- equals()方法比较数组中元素是否相等
- binarySearch()方法对有序数组进行二分查找