Java基本数据类型
Java变量类型
Java运算符
Java循环语句
Java条件语句
Java switch case
Java Number & Math类
Java Character类
public class Test {
public static void main(String args[]) {
System.out.print("------------------------Java基本数据类型------------------------------------\n");
// byte
System.out.println("基本类型:byte 二进制位数:" + Byte.SIZE);
System.out.println("包装类:java.lang.Byte");
System.out.println("最小值:Byte.MIN_VALUE=" + Byte.MIN_VALUE);
System.out.println("最大值:Byte.MAX_VALUE=" + Byte.MAX_VALUE);
System.out.println();
// short
System.out.println("基本类型:short 二进制位数:" + Short.SIZE);
System.out.println("包装类:java.lang.Short");
System.out.println("最小值:Short.MIN_VALUE=" + Short.MIN_VALUE);
System.out.println("最大值:Short.MAX_VALUE=" + Short.MAX_VALUE);
System.out.println();
// int
System.out.println("基本类型:int 二进制位数:" + Integer.SIZE);
System.out.println("包装类:java.lang.Integer");
System.out.println("最小值:Integer.MIN_VALUE=" + Integer.MIN_VALUE);
System.out.println("最大值:Integer.MAX_VALUE=" + Integer.MAX_VALUE);
System.out.println();
// long
System.out.println("基本类型:long 二进制位数:" + Long.SIZE);
System.out.println("包装类:java.lang.Long");
System.out.println("最小值:Long.MIN_VALUE=" + Long.MIN_VALUE);
System.out.println("最大值:Long.MAX_VALUE=" + Long.MAX_VALUE);
System.out.println();
// float
System.out.println("基本类型:float 二进制位数:" + Float.SIZE);
System.out.println("包装类:java.lang.Float");
System.out.println("最小值:Float.MIN_VALUE=" + Float.MIN_VALUE);
System.out.println("最大值:Float.MAX_VALUE=" + Float.MAX_VALUE);
System.out.println();
// double
System.out.println("基本类型:double 二进制位数:" + Double.SIZE);
System.out.println("包装类:java.lang.Double");
System.out.println("最小值:Double.MIN_VALUE=" + Double.MIN_VALUE);
System.out.println("最大值:Double.MAX_VALUE=" + Double.MAX_VALUE);
System.out.println();
// char
System.out.println("基本类型:char 二进制位数:" + Character.SIZE);
System.out.println("包装类:java.lang.Character");
// 以数值形式而不是字符形式将Character.MIN_VALUE输出到控制台
System.out.println("最小值:Character.MIN_VALUE="
+ (int) Character.MIN_VALUE);
// 以数值形式而不是字符形式将Character.MAX_VALUE输出到控制台
System.out.println("最大值:Character.MAX_VALUE="
+ (int) Character.MAX_VALUE);
System.out.print("------------------------Java运算符------------------------------------\n");
int a = 10;
int b = 20;
int c = 25;
int d = 25;
System.out.println("a + b = " + (a + b) );
System.out.println("a - b = " + (a - b) );
System.out.println("a * b = " + (a * b) );
System.out.println("b / a = " + (b / a) );
System.out.println("b % a = " + (b % a) );
System.out.println("c % a = " + (c % a) );
System.out.println("a++ = " + (a++) );
System.out.println("a-- = " + (a--) );
// 查看 d++ 与 ++d 的不同
System.out.println("d++ = " + (d++) );
System.out.println("++d = " + (++d) );
System.out.print("----------------------Java循环--------------------------------------\n");
int x = 10;
while( x < 20 ) {
System.out.print("value of x : " + x );
x++;
System.out.print("\n");
}
System.out.print("----------------------这是if语句--------------------------------------\n");
int y = 10;
if( y < 20 ){
System.out.print("这是 if 语句\n");
}
System.out.print("----------------------这是switch语句用法--------------------------------------\n");
char grade = 'C';
switch(grade)
{
case 'A' :
System.out.println("优秀");
break;
case 'B' :
case 'C' :
System.out.println("良好");
break;
case 'D' :
System.out.println("及格");
break;
case 'F' :
System.out.println("你需要再努力努力");
break;
default :
System.out.println("未知等级");
}
System.out.println("你的等级是 " + grade);
System.out.print("---------------------Java Math 类--------------------------------------\n");
System.out.println("90 度的正弦值:" + Math.sin(Math.PI/2));
System.out.println("0度的余弦值:" + Math.cos(0));
System.out.println("60度的正切值:" + Math.tan(Math.PI/3));
System.out.println("1的反正切值: " + Math.atan(1));
System.out.println("π/2的角度值:" + Math.toDegrees(Math.PI/2));
System.out.println(Math.PI);
System.out.print("---------------------Character 类--------------------------------------\n");
System.out.print("-------------------1--是否是一个字母--------------------------------------\n");
System.out.println(Character.isLetter('c'));
System.out.println(Character.isLetter('5'));
System.out.print("----------------2-----是否是一个数字字符--------------------------------------\n");
System.out.println(Character.isDigit('c'));
System.out.println(Character.isDigit('5'));
System.out.print("----------------3-----是否是一个空白字符--------------------------------------\n");
System.out.println(Character.isWhitespace('c'));
System.out.println(Character.isWhitespace(' '));
System.out.println(Character.isWhitespace('\n'));
System.out.println(Character.isWhitespace('\t'));
System.out.print("------------4---------是否是大写字母--------------------------------------\n");
System.out.println( Character.isUpperCase('c'));
System.out.println( Character.isUpperCase('C'));
System.out.print("---------------------是否是一个小写字符--------------------------------------\n");
System.out.println( Character.isLowerCase('c'));
System.out.println( Character.isLowerCase('C'));
System.out.print("---------------------将小写字符转换为大写--------------------------------------\n");
System.out.println(Character.toUpperCase('a'));
System.out.println(Character.toUpperCase('A'));
System.out.print("--------------------- 指定字母的小写形式--------------------------------------\n");
System.out.println(Character.toLowerCase('a'));
System.out.println(Character.toLowerCase('A'));
System.out.print("--------------------- 返回字符的字符串形式,字符串的长度仅为1--------------------------------------\n");
System.out.println(Character.toString('a'));
System.out.println(Character.toString('A'));
System.out.print("--------------------- 创建字符串--------------------------------------\n");
char[] helloArray = { 'r', 'u', 'n', 'o', 'o', 'b'};
String helloString = new String(helloArray);
System.out.println( helloString );
System.out.print("---------------------字符串长度--------------------------------------\n");
String site = "www.runoob.com";
int len = site.length();
System.out.println( "菜鸟教程网址长度 : " + len );
System.out.print("---------------------连接字符串--------------------------------------\n");
String string1 = "菜鸟教程网址:";
System.out.println("1、" + string1 + "www.runoob.com");
double floatVar=111.222;
int intVar=3;
String stringVar="string3";
System.out.printf("浮点型变量的值为 " +
"%f, 整型变量的值为 " +
" %d, 字符串变量的值为 " +
"is %s", floatVar, intVar, stringVar);
}
}
String类:
菜鸟教程中提到不要使用stringbuffer,直接使用stringbuilder,
[1]中提到如何验证stringbuilder是线程不安全的
下面涉及:
Java数组
Java正则
Java方法
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String args[]) {
double[] myList = {1.9, 2.9, 3.4, 3.5};
// 打印所有数组元素
for (int i = 0; i < myList.length; i++) {
System.out.println(myList[i] + " ");
}
// 计算所有元素的总和
double total = 0;
for (int i = 0; i < myList.length; i++) {
total += myList[i];
}
System.out.println("Total is " + total);
// 查找最大元素
double max = myList[0];
for (int i = 1; i < myList.length; i++) {
if (myList[i] > max) max = myList[i];
}
System.out.println("Max is " + max);
// 按指定模式在字符串查找
String line = "This order was placed for QT3000! OK?";
String pattern = "(\\D*)(\\d+)(.*)";
// 创建 Pattern 对象
Pattern r = Pattern.compile(pattern);
// 现在创建 matcher 对象
Matcher m = r.matcher(line);
System.out.println("---------------下面是输出结果----------------------------------\n");
System.out.println(m);
System.out.println("---------------下面是输出结果----------------------------------\n");
if (m.find( )) {
System.out.println("Found value: " + m.group(0) );
System.out.println("Found value: " + m.group(1) );
System.out.println("Found value: " + m.group(2) );
System.out.println("Found value: " + m.group(3) );
} else {
System.out.println("NO MATCH");
}
System.out.println("---------------Java 方法----------------------------------\n");
int num1 = 1;
int num2 = 2;
System.out.println("交换前 num1 的值为:" +
num1 + " ,num2 的值为:" + num2);
// 调用swap方法
swap(num1, num2);
System.out.println("交换后 num1 的值为:" +
num1 + " ,num2 的值为:" + num2);
}
/** 交换两个变量的方法 */
public static void swap(int n1, int n2) {
System.out.println("\t进入 swap 方法");
System.out.println("\t\t交换前 n1 的值为:" + n1
+ ",n2 的值:" + n2);
// 交换 n1 与 n2的值
int temp = n1;
n1 = n2;
n2 = temp;
System.out.println("\t\t交换后 n1 的值为 " + n1
+ ",n2 的值:" + n2);
}
}
OutputStream以及InputStream的使用:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.io.*;
public class Test {
public static void main(String args[]) throws IOException {
// 下面是stream
//
// char c;
// // 使用 System.in 创建 BufferedReader
// BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// System.out.println("输入字符, 按下 'q' 键退出。");
// // 读取字符
// do {
// c = (char) br.read();
// System.out.println(c);
// } while (c != 'q');
System.out.println("-----------------------------FileOutputStream(先写入文件)--------------------------------------\n");
File f = new File("a.txt");
FileOutputStream fop = new FileOutputStream(f);
// 构建FileOutputStream对象,文件不存在会自动新建
OutputStreamWriter writer = new OutputStreamWriter(fop, "UTF-8");
// 构建OutputStreamWriter对象,参数可以指定编码,默认为操作系统默认编码,windows上是gbk
writer.append("中文输入");
// 写入到缓冲区
writer.append("\r\n");
// 换行
writer.append("English");
// 刷新缓存冲,写入到文件,如果下面已经没有写入的内容了,直接close也会写入
writer.close();
// 关闭写入流,同时会把缓冲区内容写入文件,所以上面的注释掉
fop.close();
// 关闭输出流,释放系统资源
System.out.println("-----------------------------FileInputStream(从文件读取)--------------------------------------\n");
FileInputStream fip = new FileInputStream(f);
// 构建FileInputStream对象
InputStreamReader reader = new InputStreamReader(fip, "UTF-8");
// 构建InputStreamReader对象,编码与写入相同
StringBuffer sb = new StringBuffer();
while (reader.ready()) {
sb.append((char) reader.read());
// 转成char加到StringBuffer对象中
}
System.out.println(sb.toString());
reader.close();
// 关闭读取流
fip.close();
// 关闭输入流,释放系统资源
}
}
下面是Scanner-nextLine/nextInt/nextDouble的用法
import java.util.Scanner;
import java.io.*;
public class Test {
public static void main(String args[]) throws IOException {
// System.out.println("-------------------下面是nextline的使用-----------------");
//
// Scanner scan = new Scanner(System.in);
// // 从键盘接收数据
//
// // nextLine方式接收字符串
// System.out.println("nextLine方式接收:");
// // 判断是否还有输入
// if (scan.hasNextLine()) {
// String str2 = scan.nextLine();
// System.out.println("输入的数据为:" + str2);
// }
// scan.close();
// System.out.println("-------------------下面是nextInt的使用-----------------");
// Scanner scan = new Scanner(System.in);
// // 从键盘接收数据
// int i = 0;
// float f = 0.0f;
// System.out.print("输入整数:");
// if (scan.hasNextInt()) {
// // 判断输入的是否是整数
// i = scan.nextInt();
// // 接收整数
// System.out.println("整数数据:" + i);
// } else {
// // 输入错误的信息
// System.out.println("输入的不是整数!");
// }
// System.out.print("输入小数:");
// if (scan.hasNextFloat()) {
// // 判断输入的是否是小数
// f = scan.nextFloat();
// // 接收小数
// System.out.println("小数数据:" + f);
// } else {
// // 输入错误的信息
// System.out.println("输入的不是小数!");
// }
// scan.close();
System.out.println("-------------------下面是nextDouble的使用-----------------");
System.out.println("-------------------控制台会一直读取数据直到你输入非数字的字符串为止-----------------");
Scanner scan = new Scanner(System.in);
double sum = 0;
int m = 0;
while (scan.hasNextDouble()) {
double x = scan.nextDouble();
m = m + 1;
sum = sum + x;
}
System.out.println(m + "个数的和为" + sum);
System.out.println(m + "个数的平均值是" + (sum / m));
scan.close();
}
}
#----------------------------------------------------------下面是Java面向对象-------------------------------------------------------------------------
注意区分多继承 和多重继承
下面这个是多重继承(super 与 this 关键字):
class Animal { void eat() { System.out.println("animal : eat"); } } class Dog extends Animal { void eat() { System.out.println("dog : eat"); } void eatTest() { this.eat(); // this 调用自己的方法 super.eat(); // super 调用父类方法 } } public class Test { public static void main(String[] args) { Animal a = new Animal(); a.eat(); Dog d = new Dog(); d.eatTest(); } }
区别点 | 重载方法 | 重写方法 |
---|---|---|
参数列表 | 必须修改 | 一定不能修改 |
返回类型 | 可以修改 | 一定不能修改 |
异常 | 可以修改 | 可以减少或删除,一定不能抛出新的或者更广的异常 |
访问 | 可以修改 | 一定不能做更严格的限制(可以降低限制) |
枚举:
public class Test { enum Color { RED, GREEN, BLUE; } // 执行输出结果 public static void main(String[] args) { Color c1 = Color.RED; System.out.println(c1); } }
上述教程来自[2]
Reference:
[1]怎么验证StringBuilder是非线程安全的
[2]Java 教程