java基本数据类型
/**
*
*/
public class MyVari {
public static void main(String[] args) {
//java的变量及运算符
//数值型:整数型与浮点型
//整数型
short age = 19;//2字节,短整型
int sid = 3123443;//4字节,整型
long id = 410234124341234L;//8字节,长整型
float salary = 25550.87f;//存以科学计数法表示,4字节
//双精度浮点型,小数点后d标识,可以省略,8字节
double gdp = 893421324.45d;
//字符型byte,1字节,一般用于数组中
//[-128——127]
byte temp = 126;
//字符型char,表示单个字节,2字节
char ch1 = 'g';
char ch2 = 65;//方式2:ASCII码
char ch3 = '\u7f57';//方式3:无符号16进制汉字编码
//布尔型,ture/false
boolean falg = false;//4字节
//数组中每个元素占1字节
boolean[] fs = {true, false, true, false};
// java的引用数据类型
//字符串变量
String name = "李梅丽";
// java中的运算符
//算数,关系,逻辑,赋值,位运算符
//算数运算符,+,-,*,/,%(取余/模)
int x = 20,y = 30,z = 110;
int m = x+y*z-100/23;
//两个整数相除结果为整数
int n = z/y;
//%取余为10
int k = y%x;
//小数对大数取余,结果为他本身;10%25=10;
//关系运算符>,>=,<,<=,==,!=,结果为布尔型、
//逻辑运算符,逻辑与&&,逻辑或||,逻辑非!,用于连接关系表达式或直接连接布尔值,结果是布尔型
//位运算,将数据转换成二进制进行运算,按位与&,按位或|,按位异或^,按位左移<<,按位右移>>
//进行单字节数据计算,为了提高性能时使用
int a1 = 13;
int b1 = 11;
//按位与&,是双目运算符
int c1 = a1 & b1;//结果:0000 1001;
//按位或|
int c2 = a1 | b1;
//按位异或^
int c3 = a1 ^ b1;
//按位左移<<,单目运算符
int c4 = 8 << 3;
//按位右移>>
int c5 = b1 >> 3;
//赋值运算:=,+=,-=,*=,/=,%=,++,--,三目运算符
//三目运算符,结果200
int t = a1 < b1 ? 100 : 200;
//结果:我挺好
String info = (89 > 12) && (100 < 90) ? "你好吗" : "我挺好";
//常量的声明与定义
final float PI = 3.14f;
//PI不能再赋值
}
}
说明:表达式结果的类型由表达式中最高类型决定
赋值运算符隐含强制类型转换eg:
byte b = 10;
b += 8;// b = (byte)(b + 8);
System.out.println(b);
byte a1 = 1;
a1 += 'a';
System.out.println(a1);
/*
强制类型转换
取值大范围的变量(数据)赋值给取值小范围的变量
byte short int long float double
char
目标数据类型 变量名= = (目标数据类型)数据;
总结:
1、箭头方向指向的可以自动转换,否则都必须强制转换
2、byte、short和char在进行运算的时候,一律变成int类型
3、基本类型的转换,发生在8种中的7种,其中布尔类型的不参与转换
*/
public class TypeDemo3 {
public static void main(String[] args) {
long v1 = 100;
// v1(long) -> v2(short)
short v2 = (short) v1;
byte v3 = 8;
char v4 = (char)v3;
char v5 = 66;
byte v6 = (byte)v5;
}
}
二,Java的程序控制流程语句
程序流程控制:指的是程序执行过程中的功能走向,就是代码的指向。
程序流程控制语句:顺序语句(默认的),选择语句(分支语句),循环语句
选择语句:if , switch
循环语句:for,while,do…while
说明:(1)for与while循环都能互换
(2)for一般用于已知循环次数,while一般用于一只循环条件,不知道循环次数
/**
* @Java的流程控制语句
*/
public class Mysentence {
public static void main(String[] args) {
//1.分支语名:if,一般有三种格式
int face = 98;
//单分支
if (face > 95) {//条件为真才执行
System.out.println("帅");
}
//双分支
if (face > 90) {
System.out.println("很美");
} else {
System.out.println("美");
}
//多分支
int scoer = 85;
if (scoer >= 90) {
System.out.println("优秀");
} else if (scoer >= 80 && scoer < 90) {
System.out.println("良");
} else if (scoer >= 60 && scoer < 80) {
System.out.println("合格");
} else {
System.out.println("不合格");
}
//分支语句switch,主要用于代替序列数据进行判断的多分支if语句
//例如:星期的数字表示:1-6;星期一——星期六,0:星期天
int week = 3;
//变量或表达式
switch (week) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 0:
System.out.println("星期天");
break;
default://不符合以上任何条件
break;
}
// 2.循环语句:根据范围或条件决定是否重复执行某个代码块。
//for,while,do...while
//参数(初始化;循环结束的条件:步长)
for (int i = 1; i < 20; i++) {
System.out.println(i);
}
//求50-100之间的所有素数
//设置一个用于判断的变量
for (int i = 50 ;i <= 100; i++){
boolean flag = true;
for (int j = 2; j < i; j++){
if (i % j == 0){
flag = false;
break;
}
}
if (flag){
System.out.println("质数:"+ i);
}
}
//while循环:实现奇数的输出100-200之间
// int i = 100;
// while (i <= 200){
// if (i%2 != 0){
// System.out.println(i+ "是奇数");
// }
// ++i;
// }
//找50-100之间的质数
int ii = 50;
while (ii <= 100) {
boolean flag = true;
int jj = 2;
while (jj <= 50) {
jj++;
if (ii % jj == 0) {
flag = false;
break;
}
}
if (flag) {
System.out.print(ii + ",");
}
++ii;
}
}
}
四,JVM的内存模型
JVM的内存模型:Java虚拟机的内存分配情况
Java源程序:Java,经过javac编译生成的.class字节码文件,通过java启动JVM运行,执行数据时数据在内存中进行处理
java中循环体 标记的用法
break 的作用
循环结构中使用break,直接结束当前循环体,跳出当前循环。
用于switch或者是循环语句中。
单用break 只跳出当前循环,如果使用标记,可以跳出其他外层循环。
// break 会跳出标记label所在的外层循环
// 循环A
label:for (int i = 1; i <=3; i++) {
// 循环B
for (int j = 1; j <=3 ; j++) {
if(j == 3){
break label;
}
System.out.println("b "+j);
}
System.out.println("a "+i);
}
label:标志 , 放在要结束的循环语句前。(可以改成其他标识符,也就是名字)
continue 的作用
其作用为结束本次循环,即跳出循环体中下面尚未执行的语句,进入下一次循环。
// 两个循环嵌套时,可以跳出continue所在循环体,以及跳出标记循环体
label:for (int i = 0; i <=3; i++) {
for (int j = 0; j <=3 ; j++) {
if(i == 2 && i == j){
continue label;
}
System.out.println(i + " - " +j);
}
System.out.println("end = " + i);
}