标签:
内存区分配:
1. code segment:存放代码
2. data segment: 静态变量
3. stack: 局部变量
4. heap: new出来的东西
8种基本数据类型:
布尔型: boolean
字符型: char:1 字节
整数型:
byte:1字节 -127-128
short:2字节 -2 15次方--2 15次方-1
int:4字节
long:8字节
浮点类型:float (4字节, 10的38次方), double(8字节, 10的300次方)
引用数据类型: 类,接口, 数组
double放到float变量里不行, long 放到int里不会出错
数据类型转换:
1. boolean类型不能转换成其他类型
2. 整形int, 字符型char, 浮点型float数据可以相互转换
3. 容量小的类型自动转换为容量大的类型:容量指的是代表的数字的多少, 大小排序为:
byte,short,char-->int-->long-->float-->double(byte,short,char运算时自动转换成int,int+long=long...)
byte, short, char不能互相转换,他们三者在计算时首先自动转换为int类型
4. 容量大的转换为容量小的数据类型要加上强制转换符, 但会造成精度降低或者溢出.
5. 多种类型的数据混合计算时, 系统自动将所有的数据转换成容量最大的那种数据类型, 然后进行计算.
6. 实数常量默认为double, 整形常量默认为int
7. double变量不能强制转换为float, 因为浮点型存的方式不一样
8. float类型要标明f
byte=1 ; //可以, 只要别超过127 byte b3=b1+b2; //不可以, 要强制转换(byte),改成下面 byte b3=(byte)b1+b2; //如果超过了127, 会自动砍掉前面的字节 float f1=1.23f; //必须加f float f2=3.2f; float f3=f1+f2; //不可以, 要强制转换, 因为会变成double
public class TestConvert {
public static void main(String arg[]) {
int i1 = 123;
int i2 = 456;
double d1 = (i1+i2)*1.2;//系统将转换为double型运算
float f1 = (float)((i1+i2)*1.2);//需要加强制转换符
byte b1 = 67;
byte b2 = 89;
byte b3 = (byte)(b1+b2);//系统将转换为int型运算,需
//要强制转换符
System.out.println(b3);
double d2 = 1e200;
float f2 = (float)d2;//会产生溢出
System.out.println(f2);
float f3 = 1.23f;//必须加f
long l1 = 123;
long l2 = 30000000000L;//必须加l
float f = l1+l2+f3;//系统将转换为float型计算
long l = (long)f;//强制转换会舍去小数部分(不是四舍五入)
}
}
public class TestConvert2 {
public static void main(String[] args) {
int i=1,j=12;
float f1=(float)0.1; //0.1f
float f2=123;
long l1 = 12345678,l2=8888888888L;
double d1 = 2e20,d2=124;
byte b1 = 1,b2 = 2,b3 = 127;
j = j+10;
i = i/10;
i = (int)(i*0.1);
char c1=‘a‘,c2=125;
byte b = (byte)(b1-b2);
char c = (char)(c1+c2-1);
float f3 = f1+f2;
float f4 = (float)(f1+f2*0.1);
double d = d1*i+j;
float f = (float)(d1*5+d2);
}
}
char类型相加自动转换int,需要强制转换回来:
public class Test {
public static void main(String[] args){
char c1=‘c‘;
char c2=1;
char c=(char)(c1+c2);
System.out.println("c="+c);
//System.out.println("c2="+c2);
}
}
阶乘相加的程序:
public class Test{
public static void main(String[] args){
long result = 0;
long f = 1;
for(int i=1;i<=10;i++){
f=f*i;
result=result+f;
}
System.out.println(result);
}
}
1+3+5+...+99:
public class Test {
public static void main(String[] args){
int sum = 0;
for(int i=1; i<=99;i=i+2){
sum=sum+i;
}
System.out.println(sum);
}
}
输出0~9:
public class TestWhile{
public static void main(String args[]){
int i=0;
while(i<10){
System.out.println(i);
i++;
}
}
}
while break, continue:
public class Test{
public static void main(String args[]){
int stop=4;
for(int i=1;i<10;i++){
if(i==stop) break;
System.out.println(i);
}
}
}
1-100被3整除的前5位:
public class Test{
public static void main(String args[]){
int num=0;
for(int i=1;i<=100;i++){
if(i%3==0){
System.out.println(i);
num++;
}
if(num==5) break;
}
}
}
101-200之间的质数:只能被自身和1整除的数:
public class Test{
public static void main(String args[]){
for(int i=101;i<200;i+=2){
boolean f=true;
for(int j=2;j<i;j++){
if(i%j==0){
f=false;
break;
}
}
if(!f) continue;
System.out.println(i);
}
}
}
switch语句: case可以合并, 小心case穿透, 要使用break, switch里面的变成只能检测int型, 所以可以使用可以转换为int的 char,byte,short类型
public class Test{
public static void main(String args[]){
int i=8;
switch(i){
case(2):
case(3):
case(5):
case(8):
System.out.println("AAAA");
break;
case(9):
System.out.println("bbbb");
break;
default:
System.out.println("bbbb");
}
}
}
标签:
原文地址:http://www.cnblogs.com/wujixing/p/5211057.html