java学习_基础_字符串_数组

本文介绍了Java学习的起点,包括JDK的下载与环境配置,HelloWorld程序示例,Java编译工具的使用,以及基础概念如变量、数组、循环、内存分配、面向对象编程和基本数据类型操作。还涉及了IDEA的项目结构和Java编程的基础知识。
摘要由CSDN通过智能技术生成

java学习

学习路径

day01

java技术这里插入图片描述
jdk java开发工具包
在oracle官网下载 jdk下载地址
java环境搭建
安装路径不要由空格,可以更改存储路径

win+r cmd 查看Java版本
Java -version
javac -version

第一个小程序

public class HelloWorld{
	public static void main(String[] args{
		System.out.println("Hello World");
		}
}

javac 编译工具

javac HelloWorld.java

java 执行工具

java HelloWorld

java执行步骤

  • Java文件名称必须和类名一致,必须是英文模式下的符号,文件以.java为文件后缀
  • 常见错误:
  • 直接利用记事本写程序的时候,必须勾选“隐藏的项目”和“文件扩展名”,再建立文件时,
  • 注意主函数的固定写法

机器语言-汇编语言-高级语言

jdk的组成

java的跨平台:一次编译,处处可用
在这里插入图片描述

path环境变量用于记住程序路径,方便再命令行窗口的任意目录启动程序

  • List item如果path中没有改路径,就会:在这里插入图片描述
  • 一般的启动程序都放在bin包里面的
  • 电脑-属性-高级系统设置-环境变量-

java的path地址配置在这里插入图片描述

java项目结构在这里插入图片描述

main函数中的String报错

idea结构:项目-模块-包-类
idea可以调护眼色的背景
使用idea建立项目:建立空项目-建立模块-建立包-类
在这里插入图片描述

导入模块 建议先建立一个模块,再将需要导入模块中src内的内容复制粘贴进新模块中
不建议从现有模块中中添加-关联添加
都从黑点打开

删模块是否删除干净?先移除-在去相应的磁盘中去删除 .idea中的modules中的相应模块也可以删除代码 不行就重启验证

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
空项目-java模块-包-类

day02

  • 注释
    注释 //ctrl+/ /* / ctrl+shift+/ 文档注释 /** */
    out文件存放的时编译后的class文件

  • 字面量
    在这里插入图片描述
    字面量-数据在程序中书写的格式
    单引号中有且必须有一个字符
    双引号中可以没有字符

System.out.println('\n')   会换两行
  • 变量 - 存储的数据可以变化
    变量定义格式: 数据类型 变量名称 = 初始值
    变量相当于一个盒子
int a = 9 ;

变量需要先声明再使用,注意变量的作用域

  • 变量范围从生命到}截至,同一个范围中不能定义两个一样的变量,
  • 定义的时候可以没有初始值,使用的时候必须有值
  1. 进制
    除二取余法
    计算机中按最小单位-字节存储 1B=8b
    在这里插入图片描述

  2. 数据类型

  3. 类型转换
    在这里插入图片描述
    强制类型转换可能会造成数据丢失或溢出
    浮点型强转为整型,直接丢掉小数部分,保留整数部分返回

在这里插入图片描述

6.API文档下载
documentation文档
API应用程序编程接口

package com.yolo.hello;
import java.util.Scanner;
public class HelloWorld {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();  //输入一个整数
        System.out.println("HelloWorld");
        System.out.println(a);
        String b = sc.next();  //输入字符串
        System.out.printf(b);
    }
}

day03 流程控制

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
无限循环

for(; ;)
while(true)
do{}while(true)

跳转循环控制
continue 满足一定条件则continue那么continue后的语句将不会执行,继续下次循环
break 满足条件直接跳出整个循环

day03

数组

数组存储同种类型`

int [ ] array
int array[]

静态初始化:
数据类型[ ] 数组名 = new 数据类型[ ] {元素一,元素二,...}
int[ ] array  = new int[ ]{1,2,3...}

int[] age = new int[]{1,2,3,4}
int[] age={1,2,3,4,5}  //简写模式
String[] name = new String[]{"zhang","xiao"};
double[] height = new double[]{155.4,160.0};

数组名就是该地址
在这里插入图片描述
数组以0开始下标
数组长度 arr.length
利用idea的特性 输入 数组名.fori 会自动补充为 for (int i = 0; i < 数组名.length; i++)

动态初始化
数据类型[] 数组名= new 数据类型[数组长度]
int[] arr =new int[3]; //默认初始化值为null,0,0.0
在这里插入图片描述
数组的最小索引0;;最大索引为数组长度-1;

注意:数组的越界访问
找最值-打擂台

int[] ran=new int[101];

for(int i=0;i<=100;i++){ 
	int num=new random(100)+1;//生成1-100的随机数
	ran[i]=num;
}


for(int i=0,j=arr.lenth-1; i<j; i++,j--)


//随机索引
Random r=new Random();  //
int randomIndex=r.nextInt(arr.length);

在这里插入图片描述
java内存分配:堆,栈,方法区,本地方法栈,寄存器

在这里插入图片描述
在这里插入图片描述

二维数组

静态初始化
数据类型[][] 数组名 =new 数据类型[][]{{yuansu1,jj}....}
int[][] arr=new int[][]{{11,22},{23,45}}
可以有类似一维数组的简写
int[][] arr={
	{1,2,3,4},
	{2,31,4,5,6}
}
arr[0]表示二维数组的地址值 
前空后不能空

for(int i=0;i<arr.length;i++)
	for(int j=0;j<arr[i].length;j++){
	}
动态初始化
数据类型[][] arr=new 数据类型[m][n];
int[][] arr=new int[3][2];//创建一个三行两列的数组

手动对一维数组赋值在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

方法

方法定义-方法调用
调用的时候,注意参数的类型和个数对应

public static 方法类型 方法名(){}
若需要方法的返回值,则方法必有类型
方法之间不能嵌套哦,执行顺序与编写顺序无关
方法类型为void则不能写return,若要写return,则return后不能跟数据;
return后不能有其他代码,return只能存在于方法中,表示结束方法

方法重载
在这里插入图片描述
java虚拟机会通过参数的不同来区别他同名的方法

 public static void main(String[] args) {
      
        compare(1,2);//比较整数
        compare((byte)4,(byte)5);//比较字节
    }
    
    public static void compare(int a,int b){
        System.out.println(a==b);
    }

    public static void compare(byte a,byte b){
        System.out.println(a==b);
    }

System.out.print(arr1[i]+" ");//注意这里的print里面 只能是" "

方法调用的内存原理-栈内存

基本数据类型中存放的是实际数据,
引用数据类型-其他空间的地址值

int[] arr={1,2,3,4}

在这里插入图片描述
还有两个练习??
双色球系统

day04

面向对象

类名 对象名=new 类名()
成员方法,成员变量
对象.成员方法/成员变量

  • javabean类–用于描述一类事物的类,在javabean中是不写main方法的,
  • 编写main方法的类叫做测试类,可以调用javabean中的对象并进行赋值调用
  • 类名首字母建议大写,一个java文件中可以定义多个class类,且只能有一个类是public修饰,而public修饰的类名必须成为代码文件名,建议一个文件定义一个class类,
  • 成员变量的完整定义格式:修饰符 数据类型 变量名称=初始化值,一般可以没有初始化值

在这里插入图片描述
按住alt,竖着选中

封装:
在这里插入图片描述
人画圆 人调用画圆的方法,画圆是圆类的方法
private 权限修饰符,可以修饰成员,该成员被修饰之后只能在本类中才能访问

public class girl{
	private String name;
	private int age;
	}
	

方法一般都是public
成员变量和局部变量的命名重合的时候,使用的时候就近原则,另可以使用this区分

构造方法-- 创建对象时,会自动调用构造方法,并对成员变量进行初始化

  1. 方法名与类名相同,大小一致
  2. 没有返回值,没有void
  3. 没有具体的返回值,所以方法体中没有return语句
  4. 该方法由虚拟机调用,不能自己手动调用
  5. 每创建一次对象,就会调用一次
  6. 由空参构造方法,全参构造方法
  7. 若没有手动写空参构造方法,虚拟机会自动添上,若只写了有参构造方法,那么虚拟机将不会再添加空参构造方法; 建议自己手动两个都写上
 //构造方法
    public GirlFriend(){}
    public GirlFriend(String name,int age,String sex){
        this.name=name;
        this.age=age;
        this.sex=sex;
    }

标准的javabean

  • 类名见名知意,成员变量使用private修饰,至少提供两种构造方法(空参+有参),成员方法必须由get/set函数和其他一些方法
  • 可以使用快捷键或者利用PTG插件 一键生成常规的代码(get/set等)

字节码文件.class文件会加载时会进入方法区(元空间)
对象的内存图
每识别到一个方法,就加入栈
每识别到一个类就将其字节码文件加载到方法区
student s=new student(); s是引用类型
int[] arr={1,2,3,4} arr也是引用类型
引用数据类型 存放的是地址值

this的基本原理
this-方法调用者的地址值

局部变量-类中方法内的变量
成员变量-类中方法外的变量

System.out.printf("实打实的方式%s","cccc")
注意printf不会换行,用法和c差不多

在这里插入图片描述
类似c的gets和scanf

两种体系不能混用
在这里插入图片描述

字符串

字符串在lang包里面,字符串中的内容是不会发生改变的,它的对象在创建之后不能更改

String name="sdfs";
String name=new String("sdfs");
System.out.println("sdfs");
//这里一共创建了3个对象

String name="sdfs";
name="sdfs";
//这里一共创建了2个对象

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

public static void main(String[] args) {
        **//== 基本数据类型比较数据值,引用类型比较地址值**
        String s1="asd";
        String s2="asd";//串池中的地址
        String s3=new String("asd");//堆中的地址
        String s4=new String("asd");
        System.out.println(s1==s2); //t
        System.out.println(s2==s3);//f
        System.out.println(s3==s4);//f

        //equals比较的内容要完全一致返回true;equalsIgnoreCase忽略大小写比较
        String s5="Asd";
        System.out.println(s1.equals(s5));//f
        System.out.println(s1.equalsIgnoreCase(s5));//t

        Scanner s=new Scanner(System.in);
        System.out.println("请输入asd 进行比较验证:");
        String s6=s.next();//new出来的
        System.out.println(s1==s6); //f

身份证:省份+城市+区县+出生年月日+派出所+性别+个人信息码

 //subString(int begin,int end) 截取  包头不包尾,包左不包右,只有返回值才是截取的小串,原串并没有变化
   //subString(int begin) 从5开始截取到末尾
  //将字符数字转换为数字
        //‘0’--48  ‘1’---49
        int nu=sex-48;
        System.out.println('0'+0);//48--ASCii


        //敏感词替换
        //String replace(旧值,新值)  替换  只有返回值才是替换之后的结果
StringBuilder

可以看作是一个容器,创建之后里面的内容是可变的
可以提高效率
String s1=s2+s3+S4;//会产生冗余
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
//使用StringBuilder的场景:反转,拼接

StringJoiner

可以看作是一个容器,创建之后里面的内容是可变的
可以提高效率,代码简洁
拼接 --有间隔符
方法:
在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

容量和长度

StringBuilder sb=new StringBuillder();
sb.capcity()
sb.length();

集合

自动扩容,可以存储不同类型的数据
可以直接存储引用类型的数据,但是基本类型需要包装之后才能存放
引用类型有STring 数组

ArrayList
泛型–限定集合中存储数据的类型

成员方法:增删改查
在这里插入图片描述

ArrayList<String> list =new ArrayList<String>()
ArrayList<String> list =new ArrayList<>()   //jdk7之后的
打印这个对象打印的是其中的内容,不是地址值,显示的时候会用[]将其中的内容括起来
sout(list);





添加字符串遍历 格式
添加数字遍历 格式  ---基本数据类型  粗腰包装


包装类
ArrayList<对应基本类型的包装类> list =new ArrayList<String>()
ArrayList<Integer> list =new ArrayList<String>()

P23 43 115 计算机原理

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值