变量
局部变量会被存储在栈中,而全局变量会被存储在堆等数据结构中。
全局变量的定义:(public) static int a =1;
在对变量类进行强制类型转换时注意可能会造成精度丢失
表达式
& ——逻辑与 | ——逻辑或
&&——短路与 || ——短路或
&&的短路操作:在前面出现false时不再检索后面
|| 的短路操作:在前面出现 true时不再检索后面
而|和&会一直向下进行检索,所有也会相应的导致效率低下
复合运算符:
public static void main(String[] args) {
int a = 7;
//等价于 a = a*(2+3)
a *= 2+3;
System.out.println(a);
}
结果截图
char类型与重要的的ASCII码
要想将字符连接起来输出要用String.valueof()方法将字符转换为字符串,
再对字符串进行拼接
public static void main(String[] args) {
//ASCII码中:A:65 a:97(32个间隔) 0:48
char a = 'A';
int b = 32;
//利用string类型的str.value()方法连接两个不同的char类型
String str1 = String.valueOf(a);
String str2 = String.valueOf(b);
//直接输出a+b会输出对应的ASCII码
System.out.println(a + b);
//将其转变为char类型再输出会输出第一个字符
System.out.println((char)(a + b));
//转变为str类型后可以完整的输出对应的字符串
System.out.println(str1+str2);
//System.out.println((String)(a + b));
}
验证char类型数据是否是数字类型:
if(ch >= '0' && ch <= '9')
System.out.println("数字");
常用的Math函数
Math.pow(n,m)参数:n^m
Math.PI:π
public static void main(String[] args) {
double r = 1.5;
//math.pow(n,m)参数:n^m
double L = 2*r*Math.PI;
double S = Math.pow(r,2)*Math.PI;
//String.format()确定精度(四舍五入)
System.out.println("周长为"+(String.format("%.2f",L)));
System.out.println("面积为"+(String.format("%.2f",S)));
}
对Math.radom()方法的拓展:
可以生成需要范围的数据,如需要7~20之间的整数
//+7使得下限是7
//*14使得Math.radom()方法生成的0~1之间的数字扩大14倍到达0~14,再通过(int)取到0~13
int a = (int)(Math.radom()*14)+7
分支语句可以相互嵌套
数组在内存中的存储
JVM对内存的划分主要分为堆、栈以及方法区
而对JVM的调优主要指的就是对堆存储区的调优
数组(引用变量)的存储方式
循环语句
for循环的分支:普通for循环与增强for循环
增强for循环缺陷:无法对数组进行增删改等操作
根本原因:在增强for循环体中的一切操作都是对其中的局部变量进行操作
例:
//显示arr2数组中的数据
import java.util.Scanner;
public class ShuZuDemo {
public static void main(String[] args) {
int[] arr = new int[10];
int[] arr2 = new int[10];
System.out.println("普通for循环");
for(int i = 0;i< 10;i++){
arr[i] = (int)(Math.random()*10)+1;
System.out.print(arr[i]+"\t");
}
System.out.println();
System.out.println("增强for循环");
for(int a : arr2){
a = (int)(Math.random()*10)+1;
}
System.out.print("[");
int count = 0;
for(int a:arr2){
count++;
if(count != arr2.length){
System.out.print(a + "\t");
}else {
System.out.println(a + "]");
}
}
}
}
结果截图:
故增强for循环大多被用于遍历、查询等操作
面向对象
由类为基础定义的对象也是引用类型的变量,其存储方式与数组相似
如果类中有成员方法,成员方法与main函数一样会存放在方法区,在执行时会压入栈中,执行完毕后执行弹栈操作。
在新建的类中如果没有带有参数的构造方法,那么系统会为这个类自动构造一个无参的构造方法。
但是当有参数的构造方法产生时,则系统自动生成的构造方法则会失效,那么此时在main函数中再定义该类的对象时,就一定要为这个对象赋值。
(原理为方法的重载,重载这个概念适用于任何方法)