一、java数据类型
(1)8种基本数据类型
(2)引用数据类型 class 、array、interface
(3)数据类型得转换,java中short和byte会自动转换成int类型计算
package BaseData;
/**
*
*/
public class TestDemo1 {
public static void main(String[] args) {
byte num1=5;
short num2=6;
//编译器会报错
// short c=num1+num2;
int c=num1+num2;
System.out.println(c);
long d=10;
long f=c+d;
}
}
二、逻辑运算符,短路与和短路或得理解
package BaseData;
import org.junit.Test;
import javax.jws.soap.SOAPBinding;
/**
* 短路与和短路或的理解
*
*/
public class TestDemo2 {
public static void main(String[] args) {
boolean boo1=true;
boolean boo2=false;
testBool(boo1,boo2);
}
//测试短路与和短路或的方法
static void testBool(boolean boo1,boolean boo2){
//短路或,如果第一个表达式是true,那么就不会执行后面的表达式
if(boo1||boo2){
System.out.println("会执行这条语句");
}
//短路与
else if(boo2&&boo1){
System.out.println("不会执行这条语句");
}
}
}
三、分支和循环
if.....else练习
package BaseData;
import java.util.Scanner;
/**
* 测试if else练习
* Case 1: 猜数字
* 随机生成一个100以内的整数(Math.random()*100) target
* 程序接收输入的数字,如果小于target,打印“错,小了”
* 如果大于target,打印“错,大了”
* 如果输入正确,则打印”哈哈,恭喜你猜对了!!!”
*/
public class TestDemo3 {
public static void main(String[] args) {
int num=(int)Math.random()*100;
Scanner scanner=new Scanner(System.in);
System.out.println("请输入一个数:");
int num2=scanner.nextInt();
while (scanner.hasNext()){
if(num==num2){
System.out.println("哈哈,恭喜你猜对了");
break;
}else if(num>num2){
System.out.println(num+">"+num2+":猜错了,小了");
}else {
System.out.println(num+"<"+num2+":猜错了,大了");
}
}
}
}
switch case练习
package BaseData;
public class TestDemo4 {
public static void main(String[] args) {
Season a=Season.AUTUMN;
//switch中的表达式可以是int ,也可以字符串、字符
switch (a){
case SPRING:{
System.out.println("春天到了,花开了");
break;
}
case SUMMER:{
System.out.println("夏天到了,该去游泳了");
break;
}
case AUTUMN:{
System.out.println("秋天到了,落叶了");
break;
}
case WINTER:{
System.out.println("冬天到了,去滑雪把");
break;
}
//兜底,保证程序健壮
default:
System.out.println("超出枚举类型");
}
}
enum Season{
SPRING,SUMMER,AUTUMN,WINTER
}
}
for循环和while循环
package BaseData;
/**
* 测试for 循环和while循环
* 练习:求1到100内的偶数
*/
public class TestDemo5 {
public static void main(String[] args) {
int i=100;
System.out.println(tesFor(i));
System.out.println(testWhile(i));
}
static int tesFor(int num){
int sum=0;
for(int i=0;i<num;i++){
sum+=i;
}
return sum;
}
static int testWhile(int num){
int sum=0;
int i=1;
while (i<num){
sum+=i;
i++;
}
return sum;
}
}
四、数组
1、数组的基本使用
package cn.zxg.arrays;
/**
* 测试数组,数组的基本使用
*/
public class TestArrays {
public static void main(String[] args) {
//声明数组类型和长度
int[] arr01=new int[10];
for (int i=0;i<arr01.length;i++){
arr01[i]=i*10;
System.out.println(arr01[i]);
}
}
}
2、数组的三种初始化方式
package cn.zxg.arrays;
/**
* 测试数组的三种初始化方式
*/
public class Test02 {
public static void main(String[] args) {
//1、静态初始化
int []a={2,4,56};
User [] b={
new User(100,"张三"),
new User(101,"里斯"),
new User(102,"王五")
};
//2、默认初始化
int []c=new int[3];//默认给数组进行赋值,和成员变量赋值一样
//3、动态初始化
int [ ] d= new int[10];
for (int i=0;i<d.length;i++){
d[i]=i*10;
}
}
}
3、数组遍历
package cn.zxg.arrays;
/**
* 通过foreach读取数组中的元素
*/
public class Test03 {
public static void main(String[] args) {
int [] arr=new int[10];
//动态初始化数组
for(int i=0;i<arr.length;i++){
arr[i]=i*100;
}
String [] s={"aa","bb","cc"};
//使用foreach遍历数组
for (int m:arr) {
System.out.println(m);
}
for (String a:s
) {
System.out.println(a);
}
}
}
五、面向对象
对象在jvm内存变化过程
JVM内存分为栈、堆、方法区
栈的特点:
1、栈描述的是方法执行的内存模型。每个方法执行被调用都会创建一个栈帧(存储局部变量、操作数、方法出口等)
2、JVM为每个线程创建一个栈,用于存放该线程执行方法的信息(实际参数、局部变量等)
3、栈属于私有的,不能实现线程间的共享
4、栈的存储特性是“先进后出,后进先出”
5、栈是由系统自动分配的,速度快。
堆特点:
1、堆用于存储创建好的对象和数组
2、jvm只有一个堆,被所有线程共享
3、堆是一个不连续的内存空间,分配灵魂,速度慢
方法区:
1、jvm只有一个方法区,被所有线程共享
2、方法区实际也是堆,只是用于存储类、常量相关信息
3、用来存放程序中永远是不变或唯一的内容(class对象,静态变量、字符串常量)