注:此博客为看B老师Java视频时做的随笔记录
- Java跨平台由于Java在不同操作系统有不同的JVM(虚拟机)
- JDK(Java开发工具包) = 开发工具+JRE(Java运行环境)
- 此配置方式只在当前dos窗口有效,窗口关闭则配置消失
- 环境变量临时配置方式:dos命令中的set命令
- set : 用于查看本机所有环境变量信息
- set 变量名 : 查看具体一个环境变量的值
- set 变量名= : 清空一个环境变量的值
- set 变量名=具体值 : 给指定变量定义具体值
- 在原有环境变量值基础上添加新值
① 通过%变量名%操作符获取到原有环境变量的值。
② 加上新值后在定义给该变量名
如给path环境变量加入新值:
set path = 新值;%path%
- 环境变量中%JAVA_HOME%:动态获取名称为JAVA_HOME环境变量的值
- Java中常量的分类:
- 整数常量。所有整数
- 小数常量。所有小数
- 布尔(boolean)型常量。较为特有,只有两个数值。true false。
- 字符常量。将一个数字字母或者符号用单引号( ’ ’ )标识(注意:'12’不是字符类型,'1’是字符类型)
- 字符串常量。将一个或者多个字符用双引号(“ ”)标识(注意:"1"是字符串类型)
- null常量。只有一个数值就是:null
- 进制转化
- 八进制以0开头,十六进制以0x开头)
- 二进制、十进制相互转换:
- 负数进制:
- 定义变量格式: 数据类型 变量名 = 初始化值 ;
- Java中数据类型:整数类型中所占字节数依次为 1,2,4,8
- 定义long类型的数,对于过大的数,后面加字母’l’,如long l = 12345678900l ;
- 变量名一般大写,如
final double PI = 3.14;
- Java中默认小数为double类型,后面加字母’f’可以表示单精度存储,如 float f = 2.3f ;
- 强制类型转换格式:
byte b = 3;
b = (byte)(b+1);
System.out.println("b="+b);
- 算术运算符
- System.out.println(-2%5); //-2
- System.out.println(2%-5); //2
- a++和++a运算顺序:++与a谁在前先算谁
- &与&&(短路与)的区别:
- 位运算符
- 一个数异或另一个数两次,结果还是这个数,如 6^ 3 ^ 3 = 6
- 左移n相当于乘2的n次幂
- 三元运算符
- 格式: (条件表达式)?表达式1:表达式2;
- 如果条件为true,则执行表达式1,否则执行表达式2
- 使用notepad++运行java程序时,有时会出现如下错误
if_test.java:21: 错误: 编码GBK的不可映射字符 System.out.println(day "瀵瑰簲")
原因分析:一般是因为代码(或者注释)中含有中文字符。而CMD运行Java程序的时候,系统默认的编码格式是gbk。而包含中文字符的代码一般是UNICODE格式,所以直接运行含有中文字符的代码就很容易出现编码错误
解决方法:
- 方法一: 先将源文件全部剪切,接着将编码格式设置为“使用ANSI格式编码”,设置好之后再将源文件粘贴出来,保存再运行即可
- 方法二:命令行的方式指定编码格式,如:javac -encoding UTF-8 Demo.java
- switch语句特点:
- 答案的书写没有顺序
- 匹配的答案被执行,一直执行到break结束或者执行到switch语句结束 ,下图为未加break的运行结果:
- switch与if的区别:if 可以用于判断数值,也可以用于判断区间;switch可用于对固定的几个值进行判断,判断的值的类型有限
- break跳出指定循环:
两个for循环分别用outer和inner标记,break后面加对应的标记名即可跳出指定循环
- 函数的格式:
修饰符 返回值类型 函数名(参数类型 形式参数1, 参数类型 形式参数2, ...)
{
执行语句;
return 返回值;//return 关键字是用于结束该功能。并将后面的具体具体结构返回给调用者
// return 必须有。但当函数返回值类型是void时,return 语句可以忽略不写,相当于return;
// void表示没有返回值的情况
}
- 函数重载(overload)
- 概念:在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可
- 特点:与返回值类型无关,只看参数列表
- 好处:方便阅读,优化了程序设计
- 示例:
-
函数在内存中调用过程
-
main函数入栈(压栈),调用add方法
-
add方法入栈(压栈),收到参数并进行运算
-
计算结果返回到main,add方法执行完毕,add方法出栈(弹栈),内存释放
-
-
数组
- 概念:同一种类型数据的集合(容器)
(番外篇)容器特点:1.固定长度 2. 元素都有索引
- 好处:可以自动给数组中元素从0开始编号,方便操作这些数组
- 格式
-
元素类型[] 数组名 = new 元素类型[元素个数或数组长度] ;
如:int[] arr = new int[5]; -
元素类型[] 数组名 = new 元素类型[] {元素, 元素, …}; 如:
int[] arr = new int[] {3,5,1,7};
int[] arr = {3,5,1,7}; -
Java对内存空间划分为五部分:栈、堆、方法区、本地方法区、寄存器
- 栈内存:存储都是局部变量。一旦变量的生命周期结束该变量就被释放
- 堆内存: 存储都是实体(对象)// 凡是new创建的都在堆里面
每一个实体都有一个首地址值
堆内存的变量都有默认初始化值。不同类型不一样。int-0 double–0.0 boolean–false char-’\u0000’
当实体不再使用时,就会被垃圾回收机制回收
22.数组的内存图解
- int[] arr = new int[3]:局部变量arr位于栈中。堆中开辟空间(例如从从首地址0x0012开始开辟一块空间),创建数组实体,默认值为0,栈中arr(引用数据类型)指向堆中的数组(实现new int[3]赋值给arr)
- new两个相同大小的数组:通过new分别在堆内存开辟两块不同的空间,栈内存中的arr与xxx分别指向两个空间
- 一个数组指向另一个数组:(注:此部分在图中用红色文字表示,图中的sop是System.out.println的简写)arr = xxx使arr断开原来的地址转而指向数组xxx的地址,故 System.out.println(arr[0]);结果为89
- 数组常见问题
- 获取数组长度:arr.length
- 两种常见错误:
-
字符串和任何数据相加都是相连接, 如“1”+88=188
-
二维数组
内存图
-
Java13开始,字符串可以用"""…"""表示多行字符串,如
public class Demo{
public static void main(String[] args){
String s = """
SELECT * FROM demo
WHERE ID = 66
""";
System.out.println(s);
}
}
- 字符串不可变,指的是字符串内容不可变,指向改变
下一篇:Java基础记录(二)