首页 > 编程语言 >java基础学习笔记

java基础学习笔记

时间:2024-03-26 16:12:17浏览次数:18  
标签:java String int System 笔记 学习 println new out

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

相关文章

  • 深度学习与(复杂系统)事物的属性
    深度学习与复杂系统中事物属性的关系体现在:特征学习与表示:深度学习通过多层神经网络结构,能够自动从原始输入数据中学习和提取出丰富的特征表示。每一层神经网络都可能对应着事物属性的不同抽象层次,底层可能对应简单直观的属性,而随着网络深度的增加,顶层可以学习到更抽象、复......
  • java servlet
    SpringMVC的核心控制器DispatcherServlet会处理所有的请求,项目中使用Controller基本能解决大部分的功能需求,但有时也需要使用Servlet,比如实现拦截和监听功能;Servlet是Sun公司所设计开发的可以用于接收和处理HTTP请求的Java类,SpringMVC这样的框架就是对Servlet的二次......
  • jvm指针压缩和内存对齐的学习
    jvm指针压缩和内存对齐的学习背景最近要搞一个测试工作.想着能够提高一下在国产服务器上面的性能.想到一个办法是,提高JVM的内存配置.减少GC数量来提高性能.但是同时觉得jvm开启指针压缩的大小其实是32G内存.这里其实一直有一个疑惑.一般的网上说法都是需要低于......
  • 超实用!10条JavaScript这20年来增加的新功能!
    部门捞人,前端可投:https://jinshuju.net/f/o38ijj在过去的20年里,JavaScript经历了多次更新和升级,引入了许多新功能以增强其表达力、交互性和开发效率。以下是一些显著的新功能:**1.ECMAScript6(ES6)**:这是JavaScript的一个重要更新,引入了箭头函数、模板字符串、解构赋值、默认......
  • Java包装经验进面试后实话实说真的找不到工作吗?
    提升Java开发能力可以通过多种途径来弥补经验的不足。你提到的参与开源项目是一个非常好的方法,特别是选择一些简单的项目或脚手架,可以让你逐步熟悉实际开发流程和团队协作。我这里有一套编程入门教程,不仅包含了详细的视频讲解,项目实战,还提供了丰富的源代码。如果你渴望学习编......
  • 第二篇-Javascript流程控制语句
    流程控制语句:在程序执行的过程中,各个代码的执行顺序对程序的结果是有直接影响的。很多时候我们要通过控制代码的执行顺序来实现要完成的功能。流程控制主要有三种结构,分别是顺序结构、分支结构和循环结构,代表三种代码执行的顺序。 JavaScript 条件判断语句://条件成立执行......
  • Java程序基础
    第1章命名问题类名 : 首字母大写,其余小写,符合驼峰命名变量 : 首字母小写方法 : 首字母小写包名 : 小写第二章运算符2.1赋值运算符2.1.1Java的赋值运算符包括以下几种:赋值运算符(=):将右边表达式的值赋给左边的操作数。加法赋值运算符(+=):相当于a=a+b。减法......
  • Javascript基础知识
    Javascript简介:什么是Javascript       JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的高级语言。脚本语言:在程序的运行过程中逐行进行解释执行,不需要预编译。动态类型:在声明了一个变量之后,我们能够随时改变它的数据类型。弱类型:变量在使用前......
  • 决策树学习-计算数据集的信息熵
    #计算信息熵defcalEntro(dataset):dataset=np.array(dataset)data_len=len(dataset)#labelCount记录各类样本数据的数量labelCount={}forrowindataset:cur_label=row[-1]ifcur_labelnotinlabelCount.keys():......
  • 第三篇-Javascript数组
    什么是数组数组指一组有序数据的集合,其中的每个数据被称作元素,在数组中可以存放任意类型的元素。可以通过new关键字来创建数组。Javascript访问数组1、通过索引访问单个元素:letarr=[1,2,3,4,5];console.log(arr[0]);//输出1console.log(arr[2]);//输出3cons......