public class demo {
public static void main(String[] args) {
}
}
输入
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数:");
int i = sc.nextInt();
随机数
Random r = new Random();
int number = r.nextInt(100);//生成随机数0~99
System.out.println(number);
计算
System.out.println(2 + 2); //4
System.out.println(3 - 2);
System.out.println(2 * 8);
小数
在代码中如果有小数参与,结果可能是不精确的、涉及小数在计算机中的存储模式
System.out.println(1.1 + 1.01); //2.1100000000000003
整数
参与计算结果只能得到整数
System.out.println(10 / 3); //3
System.out.println(10 % 3); //1
System.out.println(10.0 / 3); //3.3333333333333335
隐式转换
取值范围小的和取值范围大的进行运算,小的会先提升为大的再进行运算
byte-short-char在进行运算时都会直接先提升为int再进行运算
int a = 10;
double b = a;
System.out.println(b);
强制转换
double c = 10.2;
int d = (int) c;
System.out.println(d);
byte e1 = 10;
byte e2 = 20;
byte e12 = (byte) (e1 + e2);
System.out.println(e12); //byte取值范围-128~127
System.out.println(1 + 99 + "年"+1+2); //在加的过程中从左到右依次执行;只要有字符串就开始拼接操作 100年12
当字符+字符 或者 字符+数字 时,会把字符通过ASCII码表查询到相应的数字再进行计算
System.out.println(1 + 'a'); //98
System.out.println('a' + 'a'); //194
System.out.println('a' + "a"); //字符是单引号 aa
System.out.println('a' + "ab"); //aab
自增运算符自减运算符
//a++先用后加
int f = 10;
int f1 = f++;
System.out.println(f); //11
System.out.println(f1); //10
//++a先加后用
int g = 10;
int g1 = ++g;
System.out.println(g); //11
System.out.println(g1); //11
// +=,-=,*=,/=,%=自动强制类型转换
short h = 1;
h += 1;
System.out.println(h); //相当于s = (short)(s+1);()里是看h是什么类型的
关系运算符
==,!=,>=,<=,<,>结果都是boolean类型,结果是true或false
逻辑运算符
&都真才真,|都假才假,逻辑异或^相同为flase不同为true,逻辑非!取反
取反的感叹号不要写多次,要么不写要么只写一次
短路逻辑运算符 短路与&&短路或||,结果与&,|相同,但是有短路效果;如果左边能确定最终结果,右边不执行
System.out.println(true & true); //true
System.out.println(true & false); //false
System.out.println(true ^ true); //false
System.out.println(!true); //false
三元运算符
可以进行判断,根据判断结果得到不同内容
int i = 4;
int j = 6;
int ii = i > j ? i : j;
System.out.println(ii);
System.out.println(i > j ? i : j);
流程控制
if
int a = 6;
if (a > 2) {
System.out.println("可以");
}
if (a < 2){
System.out.println("可以");
}else{
System.out.println("不可以");
}
if (a == 1){
System.out.println("1");
}else if(a == 2){
System.out.println("2");
}else{
System.out.println("4");
}
switch
a可以是枚举可以是字符串
case给出的值只能是字面量,不能是变量,不允许重复
switch(a){
case 1:
System.out.println("1");
break;
case 2:
System.out.println("2");
break;
default :
System.out.println("不是1和2");
break;
}
这种情况只能{}中只有一个语句才能简化,int a = 1是两个语句,先定义a,后赋值1给a
switch(w){
case 1,2,3,4,5 -> System.out.println("工作日");
case 6,7 -> System.out.println("休息日");
default -> System.out.println("没有这个星期");
}
循环
for
for(int i = 0;i <10;i++){
System.out.println(i);
}
无限循环
for(;;){
System.out.println();
}
while
int a = 1;
while (a <= 5){
System.out.println(a);
a++;
}
无限循环
while(true){
System.out.println();
}
do while 循环
至少循环一次,先执行后判断
int c = 1;
do{
System.out.println(c);
c+=1;
System.out.println(c);
}while(c<=3); // 12 23 34
无限循环
do{
System.out.println()
}while(true);
continue
for (int i = 1; i <= 5; i++){
if(i == 3){
continue;//结束本次循环继续下一次循环
}
System.out.println(i);
}
//1245
break
for (int i = 1; i <= 5; i++){
System.out.println(i);
if(i == 3){
break;//结束整个循环
}
System.out.println(i);
}
//11223
数组
int[] array = new int[]{11, 22, 33, 44, 55,};
double[] array2 = new double[]{11.1, 22.2, 33.3,11}; //11.0
数组的地址值
System.out.println(array);
System.out.println(array2);//[D@4eec7777 [表示是一个数组,D,表示是double类型,@固定格式,4eec7777地址值,16进制
索引
array[1]
修改
array[0] = 12;
遍历
将数组中的所有数据取出来,取出来后可以打印,求和,判断......
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
动态初始化
只指定数组长度,由系统为数组分配初始化值
int[] arr = new int[3];
arr[0] = 1;
arr[1] = 2;
System.out.println(arr[0]); // 1
System.out.println(arr[1]); // 2
System.out.println(arr[2]); // 0
存引用数据类型
User u1 = new User("xiaohong",23)
User[] userArr = new User[1];
userArr[0] = u1;
方法
public static void main(String[] args) {
//调用方法
//直接调用
getSum(10,20);//实参
print();
//赋值调用
int sum = getSum(10,20);
int sum2 = getSum(60,90);
System.out.println(sum);
System.out.println(sum2);
//输出调用
System.out.println(getSum(10,20));
System.out.println(getSum(10,20.0));
return;//表示结束方法,这句话下面的代码属于无效代码
}
//定义方法
public static void print() {
System.out.println("最简单的方法");
return;//可省略
}
public static int getSum(int num1,int num2) { //返回值类型,void表示方法没有返回值,形参
int result = num1 +num2;
return result;
//看到方法进入方法,执行完毕回到调用出
}
public static double getSum(int num1,double num2){ //重载
double result = num1 +num2;
return result;
}
字符串
创建
String a = "abcd";
System.out.println(a); //abcd
String a2 = new String();
System.out.println("@" + a2 + "@"); //@@
String a3 = new String("a3");
System.out.println(a3); //a3
根据字符数组创建新的字符串,可以改字符串指定位置
char[] chs = new char[]{'a', 'b', 'c'};
String a4 = new String(chs);
System.out.println(a4); //abc
字节,网络当中传递的一般是字节信息。可以转化为字符串
byte[] bytes = new byte[]{97, 98, 99, 100};
String a5 = new String(bytes);
System.out.println(a5); //abcd
比较
boolean result = a.equals(a5);
System.out.println(result); //true
System.out.println(a == a5); //false
String a6 = "ABCD";
boolean result2 = a.equalsIgnoreCase(a6); // 不考虑大小写
System.out.println(result2); //true
遍历
for (int i = 0; i < a6.length(); i++) {
char c = a6.charAt(i);
System.out.println(c);
} //ABCD
统计字符个数
String a7 = "1uasdh1982JEHADKUi";
int bigcount = 0;
int smallcount = 0;
int numbercount = 0;
for (int i = 0; i < a7.length(); i++) { //字符串长度是方法,要加小括号
char c = a7.charAt(i); //字符串索引
if (c >= 'a' && c <= 'z') {
smallcount++;
}else if(c >= 'A' && c <= 'Z'){
bigcount++;
}else if(c >= '0' && c <= '9'){
numbercount++;
}
}
System.out.println(smallcount + ","+ bigcount+","+numbercount); //6,7,5
截取
String phoneNumber = "18834567890";
String start3 = phoneNumber.substring(0,3);
String end4 = phoneNumber.substring(7);
System.out.println(start3+"****"+end4); //188****7890
替换
String a8 = "很好, TMD,CNM";
String[] arrr = {"TMD", "CNM","WC"};
for(int i = 0;i<arrr.length;i++){
a8 = a8.replace(arrr[i],"***");
}
System.out.println(a8); //很好, ***,***
字符串转化为数组
String a9 = "dsfsd";
char[] arr = a9.toCharArray();
System.out.println(arr); //dsfsd
System.out.println(arr[0]); //d
stringBuilder
StringBuilder sb = new StringBuilder(""); //可以是空参,不含有任何内容
for(int i = 0;i<=3;i++){
sb.append(3).append("d").append('s').append(true).append(2.3); //添加数据并返回对象本身,什么类型都可以
}
System.out.println(sb); //打印对象是属性值3dstrue2.33dstrue2.33dstrue2.33dstrue2.3
StringBuilder的"capacity"是指它内部缓冲区的大小,用于存储构建字符串所需的字符。当字符串操作导致需要更多的存储空间时,StringBuilder会自动增加其容量,以适应新的字符。
反转sb.reverse()
System.out.println(sb.reverse()); //3.2eurtsd33.2eurtsd33.2eurtsd33.2eurtsd3
// 用了之后sb就变了
System.out.println(sb); //3.2eurtsd33.2eurtsd33.2eurtsd33.2eurtsd3
返回长度
int length = sb.length();
System.out.println(length); //40
System.out.println(sb.length()); //40
把Stringbuilder转换为String
String s = sb.toString();
System.out.println(s); //3.2eurtsd33.2eurtsd33.2eurtsd33.2eurtsd3
char c = s.charAt(1);
System.out.println(c); //.
因为Stringbuilder是java已经写好的类,java在底层给他做了一些特殊处理,打印对象不是地址值而是属性值。
String str = "abc";
String result = new StringBuilder().append(str).reverse().toString();
System.out.println(result); //cba
stringJoiner
jdk8才出现,也是一个容器,创建之后里面的内容是可以改变的
StringJoiner sj = new StringJoiner(",","(",")");
sj.add("a").add("b").add("c");
System.out.println(sj); //(a,b,c)
int len = sj.length();
System.out.println(len); //7
String result = sj.toString();
System.out.println(result); //(a,b,c)
基本数据类型和引用数据类型
main方法进栈后基本数据类型直接跟着进去,方法执行完出栈
引用数据类型在堆里开辟空间;此时main里:String s = 堆里的地址值
标签:java,String,int,System,笔记,学习,println,new,out From: https://www.cnblogs.com/lm02/p/18096926