java入门
1、第一个程序
public class HelloJava{
public static void main(String[] args){
System.out.println("你好 java");
}
}
/*
public:访问说明符, 表明是一个公共类
class:用于声明一个类
static:表明该方法是一个静态方法,允许调用main()方法,无需创建类的实例
void:表示main()没有返回值
main():是所有程序的入口地址,最先开始执行
*/
编写后在cmd输入命令,用于编译源程序。
javac HelloJava.java
当类名与文件名不一致时会出现以下错误。
执行java程序的命令:
java HelloJava
出现中文乱码时用记事本打开文件,另存为ANSI编码,再次编译执行java文件即可
java里大写与小写是不一样的,Java 程序中的关键字全部是小写的,无需大写任何字母
在 Java 中,一行注释以双斜杠“//”标识;多行注释包含在“/”和“/”之间;文档注释包含在“/*”和“/”之间
2、javadoc(文档注释)
Javadoc 是 Sun 公司提供的一种工具,它可以从程序源代码中抽取类、方法、成员等注释,然后形成一个和源代码配套的 API 帮助文档。
用法如下:
javadoc [options] [packagenames] [sourcefiles]
/*
options 表示 Javadoc 命令的选项;
packagenames 表示包名;
sourcefiles 表示源文件名。
*/
在 cmd(命令提示符)中输入javadoc -help就可以看到 Javadoc 的用法和选项。
3、变量常量
声明变量:
String employee; // String 类型的变量
变量赋值:
char usersex='女'; // 直接赋值
定义常量:
final dataType variableName = value
//final 是定义常量的关键字,dataType 指明常量的数据类型,variableName 是变量的名称,value 是初始值
// 静态常量
public static final double PI = 3.14;
// 声明成员常量
final int y = 10;
直接量(可以直接赋值给变量的值):
java支持8种类型的直接量。
int a = 5;
long e = 3L; //long e = 0x12L (表示18L)
char c = 'a';
boolean b = true;
float f = 5.12f;
double d = 4.12;
String name = "C语言中文网";
null;
4、数据类型转换
显示转换:
(type)variableName
5、运算符
逻辑运算符:
- && 与 & 区别:如果 a 为 false,则不计算 b(因为不论 b 为何值,结果都为 false)
- || 与 | 区别:如果 a 为 true,则不计算 b(因为不论 b 为何值,结果都为 true)
(||与&&能提高效率)
三目运算符:
int x,y,z;
x = 6,y = 2;
z = x>y ? x-y : x+y;
//若x>y为真,则z=x-y否则z=x+y
//可为 x>y ? z=x-y : z=x+y;
java流程控制语句
1、if-else if-else-if
if (表达式) {
语句块1;
} else {
语句块2;
}
if(表达式1) {
语句块1;
} else if(表达式2) {
语句块2;
...
} else if(表达式n) {
语句块n;
} else {
语句块n+1;
}
2、switch
switch(表达式) {
case 值1:
语句块1;
break;
case 值2:
语句块2;
break;
…
case 值n:
语句块n;
break;
default:
语句块n+1;
break;
}
//switch括号里的变量与case后的值比较,命中时执行对应语句块,否则执行default对应的语句块
判断分支多时,使用switch效率较快
3、while
while(条件表达式) {
语句块;
}
do {
语句块;
}while(条件表达式);
while 循环先判断,再执行。do-while 循环先执行,再判断。
4、for
public static void main(String[] args) {
int result = 1;
for (int number = 1; number <= 5; number++) {
result *= number;
}
System.out.print("5 的阶乘结果是:" + result); // 输出"5的阶乘结果是:120"
}
5、foreach
// 声明并初始化int数组
int[] numbers = { 43, 32, 53, 54, 75, 7, 10 };
// for-each语句
for (int item : numbers) {
System.out.println("Count is:" + item);
}
java字符串处理
1、定义字符串
String str = "Hello Java";
String str1 = new String("Hello Java");
2、字符串与int转换
str转int:
Integer.parseInt(str)
Integer.valueOf(str).intValue()
int转str:
String s = String.valueOf(i);
String s = Integer.toString(i);
String s = "" + i;
- valueOf() 方法将数据的内部格式转换为可读的形式。
- parseXxx(String) 这种形式,是指把字符串转换为数值型,其中 Xxx 对应不同的数据类型
- toString() 可以把一个引用类型转换为 String 字符串类型
3、字符串拼接
//1
String str="Welcome to"+"Beijing"
//2
String info = "三国演义、";
info = info.concat("西游记、");
4、字符串常用函数
//获取字符串长度
info.length();
//大小写转换
字符串名.toLowerCase()
字符串名.toUpperCase()
//去除字符串中空格
字符串名.trim()
//提取子字符串
String str = "我爱 Java 编程";
String result = str.substring(3); //Java编程
String result = str.substring(3,7); //Java
//substring() 方法是按字符截取,而不是按字节截取。
str.split(String sign,int limit)
//sign 为指定的分割符
//limit 表示分割后生成的字符串的限制个数,如果不指定,则表示不限制
//将目标字符串中的指定字符(串)替换成新的字符(串)
字符串.replace(String oldChar, String newChar)
//正则表达匹配到的第一个字符串替换为新的字符串
字符串.replaceFirst(String regex, String replacement)
//所有匹配到正则表达的字符串都替换
字符串.replaceAll(String regex, String replacement)
5、字符串比较
//逐个地比较两个字符串的每个字符是否相同
str1.equals(str2);
//比较时不区分大小写
str1.equalsIgnoreCase(str2);
//按字典顺序比较两个字符串的大小
str.compareTo(String otherstr);
// str 位于 otherster 参数之前,比较结果为一个负整数;如果 str 位于 otherstr 之后,比较结果为一个正整数;如果两个字符串相等,则结果为 0。
- equals() 方法比较字符串对象中的字符。而==运算符比较两个对象引用看它们是否引用相同的实例
6、空字符串和null
“”是一个长度为 0 且占内存的空字符串,在内存中分配一个空间,可以使用 Object 对象中的方法。
null 是空引用,表示一个对象的值,没有分配内存
7、字符串查找
//fromIndex为查找时的起始索引
str.indexOf(value,int fromIndex)
//例
String s = "Hello Java";
int size = s.indexOf('v'); // size的结果为8
//返回字符(串)在指定字符串中最后一次出现的索引位置(即从右查找),没有返回-1
str.lastlndexOf(value, int fromIndex)
//字符串内根据指定的索引查找字符
字符串名.charAt(索引值)
//例
String words = "today,monday,sunday";
System.out.println(words.charAt(0)); // 结果:t
8、StringBuffer 类
StringBuffer 类是可变字符串类,创建 StringBuffer 类的对象后可以随意修改字符串的内容。如果字符串的长度超过了 StringBuffer 类对象的容量,则该对象的容量会自动扩大。
定义:
// 定义一个空的字符串缓冲区,含有16个字符的容量
StringBuffer str1 = new StringBuffer();
// 定义一个含有10个字符容量的字符串缓冲区
StringBuffer str2 = new StringBuffer(10);
// 定义一个含有(16+4)的字符串缓冲区,"青春无悔"为4个字符
StringBuffer str3 = new StringBuffer("青春无悔");
/*
*输出字符串的容量大小
*capacity()方法返回字符串的容量大小
*/
System.out.println(str1.capacity()); // 输出 16
System.out.println(str2.capacity()); // 输出 10
System.out.println(str3.capacity()); // 输出 20
追加字符串:
StringBuffer 对象.append(String str)
//追加到对象字符串后面
替换字符:
//替换指定位置的字符
StringBuffer sb = new StringBuffer("hello");
sb.setCharAt(1,'E');
System.out.println(sb); // 输出:hEllo
反转字符串:
StringBuffer sb = new StringBuffer("java");
sb.reverse();
System.out.println(sb); // 输出:avaj
删除字符串:
//移除指定位置的字符
StringBuffer sb = new StringBuffer("She");
sb.deleteCharAt(2);
System.out.println(sb); // 输出:Sh
//移除序列中子字符串的字符
StringBuffer sb = new StringBuffer("hello jack");
sb.delete(2,5);
System.out.println(sb); // 输出:he jack
对于String是不可变的而StringBuffer是可变的说法有点迷惑,所以找了知乎上的解答:https://zhuanlan.zhihu.com/p/44796727