Java基础(1)

  • Java

1、java语言的背景

语言:人们互相沟通交流的表达方式。(自然界有属于各自沟通交流的方式)

计算机语言:人和计算机之间进行信息交流沟通的语言(人们想要表达的意志使得计算机能识别)。

java就是计算机语言当中的一种,它是美国sun公司在1995年推出的计算机语言。詹姆斯·高斯林被誉为java之父

Java 开发工具

Eclipse MyEclipse Idea

java语言跨平台原理

平台:操作系统

PC:电脑

移动:手机、平板智能设备

跨平台:Java能够再其他操作系统上运行

Java语言为什么能跨平台

java不运行在操作系统上而是虚拟机(JVM

JVM本身不跨平台

jdk包含jre jdk是开发环境 jre是运行环境

jdk:

包含jre 开发工具

jre:jvm和核心类库

配置环境变量

在dos命令行:

jdk安装目录下的bin指令

按环境变量后可在任何目录运行否则需要进入相关目录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VchTxUVm-1658133424657)(…/老师笔记/day01/img/9.png)]

java程序开发流程:

1.编写源代码:

.java后缀名

规范:类名第一个字母大写

2.编译源代码:

把源代码编译成字节码文件 字节码文件后缀名.class

使用javac编译

3.运行代码:运行字节码文件

java字节码文件名

不要加class

常见错误

1.文件名与类名不符合

2.使用中文符号

3.String System 等小写

4.分号 括号漏写

控制台中文乱码:记事本默认UTF -8 dos默认GBK

解决方法:改记事本为ANSI

输出

System.out.println() //在控制台输出 输出后换行 小括号可以没有内容

System.out.print() //不换行 一定要参数
   
转义符

”\“转义符开始符号

\n:换行符

\t:制表符 tab键

想输出‘\’须写成‘\\’

注释

养成学注释的习惯

给人看的

注释的位置

1.类名

2.方法名

3.复杂的逻辑代码

Java的注释

//单行注释

/* */多行注释

/**

*/ javaDoC注释:文本注释,多行 在类名,方法上 使用

变量

内存中的存储是临时存储

本质:一个小空间

变量要素:

1.变量名:方便取数据 类似门牌号

	要求: 1)数字 字母 下划线 不能以数字开头`

​ 2)不能使用关键字 public… class static void

​ 3)变量名第一个字母小写 遵循小驼峰 第一个单词首字母小写 剩下的大写

​ 4)见名知意,推荐使用英文单词

2.数据类型 :注意开辟空间大小

  • 基本数据类型[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tUG9xvw8-1658133424659)(…/老师笔记/7-7笔记/assets/image-20220707104410094.png)]

数值类型:整数、浮点数、 

字符类型:

布尔类型:

在这里插入图片描述

  • 引用数据类型

    • String
  1. 变量的值
  1. 整数 默认的数据类型: int 1 小数: 默认的数据类型: double 1.5
  2. char类型值: 只能是单字符, 值必须使用单引号引起 ‘a’ ‘中’ ‘1’ ‘ab’ 错误
  3. boolean类型值: 只有两个: true,false
  4. String类型: 不能基本数据类型, 值必须使用双引号引起, 可以是n个字符组成, “a”, “abcd”,“”,“阿达的撒大大”

变量使用方法

1.声明变量(开辟空间 数据类型 变量名

2.给变量名 变量名=值;有方向的赋值符号

3.使用,取值

整型赋值注意事项

byte short int long

如果变量是byte:复制的数组是-128—127之间可以直接复制

但如果超出该范围则会报错

如果整型类型赋值,数字超出类型的范围则会报错

浮点型

float : 单精度浮点数

double:双精度浮点数

小数默认类型是double类型,double优先级比float高

高类型不能转低类型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-maJfKZqm-1658133424661)(…/老师笔记/day01/img/46.png)]

数据类型转换:

1)由低到高 Java自动转换

2)由高转到低 需要强制转换

​ 简写:float num =1.2f

Scanner 输入

使用步骤

1.在类上导入Scanner类 位于java.util包 import.Java.util.Scanner

​ String/System位于Java.lang包 程序自动加载不需要导包

2.创建scanner

​ scanner input = new Scanner(System.in);

3.调用next相关的方法进行输入

​ nextInt()输入整型

​ nextDouble()

​ nextBoolean()

​ nextFloat()

但是:不能输入char 没有nextChar()

next()输入字符串 nextLine()输入字符串

细节:

输入字符串的next()和nextLine()

next()输入有效字符串 不包含空格 tab 回车 遇到这些结束输入但是这些内容存在到缓存中

nextLine()可以包含空格,但是前面有其他next方法则不起作用,无法输入

解决方案:1.nextLine()放在所有next()方法前

​ 2.清除next缓存

运算符

1.运算符

2.赋值运算符

3.比较运算符

4.逻辑运算符

5.++,–运算符

6.位运算: & (与) |(或) ^(异或)

算术运算符

+: 1) 数值类型+加法

​ 2)字符串与任意类型+ 表示拼接 字符串加任何东西都会变成字符串

/:1)整数/整数 *两个整数会取整 有小数会保留

%:取余 5%2=1

  1. 判断是否整除
  2. 得到某位的值

自加自减

++:+1 语法 变量++ ++变量

​ 前加加 :++变量 先变量加1后运算

​ 后加加:变量++ 先运算后加1

–:减1 语法 变量-- --变量

​ 前减减:–变量

​ 后减减:变量–

赋值运算符

  • = 变量=值 变量=变量1
  • -= a=a-b
  • += a=a+b
  • /= a=a/b
  • %= a=a%b

赋值符号与算数符号 涉及隐式转换

低数据类型与高数据类型运算 结果会是高的

int a = 10;

byte b= 1;

b+=a 隐式转换成byte

比较运算符

  • == 等于

  • !=不等于

  • > 大于

  • < 小于

  • >= <=

    都是boolen类型

逻辑运算符

  • && 短路与 前一个为flase 则后面不执行

  • || 短路非 前一个为true 则后面不执行

  • !非

  • &与

    都是boolen类型 连接多个表达式

三目运算符

语法:条件(boolea的表达式)?值1:值2

如果条件为true:返回值1

flase 则返回值2

对if-else某些场景简化 而且可以嵌套 超过三层不建议

位运算( 二进制)

& :按位与 只要有0就是0

| :按位或 只要全0才是0

! :按位非 1取反->0 0-取反->1

^ : 异或 相同为0不同为1

位移操作

>>左移

<<右移

一个数异或同一个数两次 则是自己

分支语句

1.if 条件语句

if(){

}else if(){

}else{

}

2.switch 条件语句 等值判断

switch()

case 1:

​ …

​ break;

case 2:

​ …

​ break;

default:

​ …

​ break;

break可以省略也可以不省略

类型:基本数据类型 String 枚举

default一般写在最后面 如果写在前面一定要加break;

无论default在switch语句中的哪个位置,编译器都是先找case,程序从第1个找到的case开始判断执行,只有所有的case都不满足条件,才会执行default,(这一点说明编译器作者想的很多,兼容性很强),所以default的位置可以随便放,但是出于编码规范的考虑,一般写在最后

循环

使用循环的步骤

  1. 判断是否需要用循环
    • 看问题中是否有重复的事情
  2. 找循环条件
  3. 找循环要做的事情

1.for 循环

for(表达式1;表达式2;表达式3){

​ 循环要做的事情

}

表达式1:初始化循环变量,给循环变量赋值,只执行一次

表达式2:循环条件表达式,boolean类型结果,如果true:表示继续循环

每循环执行一次

表达式3:修改循环变量

难点:把循环条件,循环要做的事情转换成代码

细节:

  • 表达式1可以省略 将表达式1写在for循环外面 提升循环变量的作用域

  • 表达式2可以省略 默认为true 出现死循环 可以用break关键字退出循环

  • 表达式3也可以省略 但也有可能出现死循环 也可以在循环体写表达式三

  • 三个表达式都省略 但两个分号不能省略 for(;😉{死循环

    //在循环体中使用break退出循环

    }

2.while 循环

while(条件语句){

​ 循环体

}

for/while :先判断后循环,可能一次都不执行

3.do-while 循环

do{}while()

先执行后循环

循环关键字

break : 在switch使用 退出Switch

​ 在循环里使用退出循环

continue:跳过本次循环,直接进入下一次循环

循环嵌套

for(){//外循环
	for(){//内循环
        
        
	}
}

外循环循环一次内循环循环一轮

数组

变量:只能存储一个值

数组:存储的一组相同数据类型

​ 缺点:固定长度

​ 也成为容器

数组要素:

  1. 数组名

  2. 数据类型

  3. 元素

  4. 下标:获取指定位置的元素:从0开始 0是第一位

  5. 数组长度:表示数组最大允许存多少个元素

    • ==0<下标<数组长度

使用数组:

1.声明数组 :(没有开辟空间)

>语法 :
>
>​	数据类型[] 数组名;
>
>​	数据类型 数组名[];
>
>

2.开辟空间,指定数组的长度 通过new关键字

初始值由数据类型决定

int / byte /long :0

double / float :0.0

char :\u0000

boolearn: false

String / 类 : null

3.通过下标放元素

如果下标超出最大下标:抛出数组越界异常

如果没开辟空间则使用数组会编译不通过

在实际开发中使用循环遍历数组

动态获取数组长度,

数组属性:length

int[] arr4 = new int[]{1,2,3}//数组静态创建

int[] arr5 = {1,2,3}

栈区:方法执行时,方法入栈,存放临时变量,当方法执行完成后,出栈回收

堆区:new 出来的东西都在堆区,Java提供GC(垃圾回收器)机制

垃圾回收器

二维数组

有多个一维数组组成

声明一个二维数组

数据类型[][] [][] [][] 数组名

数组名 = new 数据类型[长度1][长度2]

长度1:一维数组的长度

长度2:一维数组元素个数

赋值 数组名[i][j] = 值

使用同理

数组名.length :二维数组的一维数组的个数

开辟空间,指定数组的长度 通过new关键字

初始值由数据类型决定

int / byte /long :0

double / float :0.0

char :\u0000

boolearn: false

String / 类 : null

3.通过下标放元素

如果下标超出最大下标:抛出数组越界异常

如果没开辟空间则使用数组会编译不通过

在实际开发中使用循环遍历数组

动态获取数组长度,

数组属性:length

int[] arr4 = new int[]{1,2,3}//数组静态创建

int[] arr5 = {1,2,3}

栈区:方法执行时,方法入栈,存放临时变量,当方法执行完成后,出栈回收

堆区:new 出来的东西都在堆区,Java提供GC(垃圾回收器)机制

垃圾回收器

二维数组

有多个一维数组组成

声明一个二维数组

数据类型[][] [][] [][] 数组名

数组名 = new 数据类型[长度1][长度2]

长度1:一维数组的长度

长度2:一维数组元素个数

赋值 数组名[i][j] = 值

使用同理

数组名.length :二维数组的一维数组的个数

数组名[i].length:二维数组里第i位置的一维数组元素个数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值