心情: :ok:
笔名: 花美
行业: telecommunication
TIME: 2020-4-12
java数据类型
数据类型 | 说明 | 字节 |
---|---|---|
Byte | 字节型 | 1 |
Short | 短整型 | 2 |
Int | 整型 | 4 |
Long | 长整型 | 8 |
Float | 单精度浮点 | 4 |
Double | 双精度浮点 | 8 |
Char | 字符型 | 2 |
Boolean | 布尔型 | 1 |
class a{
public static void main(String[] args)
{
int x,y;
x=3;y=4;
char ch='h';
double d = 1.23E5;//E可以大小写 1.23*10的5次方
float f = 1.23e5f;//与double不同多加个f 不加f默认double
double dl = .2;
System.out.println(x+","+y+","+ch+","+d+","+f+","+dl);
//结果:3,4,h,123000.0,123000.0,0.2
}
}
Unicode编码
Unicode表示法,在值的前面加上
\u
例子:char c = '\u005d'
运算符
名称 | 运算符 | 含义 |
---|---|---|
三目运算符 | a>b?a:b | a大于b取a,否则取b |
与 | operator1 && operator1 | 乘 ; 同时满足 |
或 | operator1 || operator1 | 相加 ; 满足一个即可 |
非 | !operator1 | 取反 |
模 | % | 相除取余数 |
&&
与||
为短路运算符
- & 前后两个操作数都会进行计算
- && 前面条件正确时,才执行后面,==不正确时,就不执行(直接false)==,就效率而言,这个更好
- | 前后两个操作数都会进行计算
- || 前面条件正确,后面不执行(直接true)==,不正确时,后面执行 ,就效率而言,这个更好
运算符-优先级
优先级从上至下 : 由高到低
运算符 |
---|
( ) |
!,++,— — |
*,/,% |
+,— |
<,<=,>,>= |
= = ,! = |
&& |
|| |
=,+ =,* =,/ =,% =,— = |
综合例子:
import java.util.*;
public class a{
public static void main(String[] args){
System.out.println("亲爱的\n你想判断的年份是:");
Scanner sc = new Scanner(System.in);
while(true){
int year = sc.nextInt();
if(((year%4==0)&&(year%100!=0))||(year%400==0)){
System.out.println("亲爱的\n"+year+"是闰年O!");
}else{
System.out.println("亲爱的\n"+year+"并不是闰年!");
}
//运行结果:
//亲爱的
//你想判断的年份是:
//2002
//亲爱的
//2002并不是闰年!
//2004
//亲爱的
//2004是闰年o!
}
}
}
数组
public class a{
public static void main(String[] args){
int[] intArray;
String strArray[]; //第二种写法
intArray = new int[10];
strArray = new String[10];
float floatArray []= new float[10];
char[] ch = {'a','b','c'};
System.out.println("ch数组长度"+ch.length
+"\t"+"intArray数组第二个元素为"+intArray[1] +"\t"
+"strArray数组第二个元素为"+strArray[1]+"\t"
+"float数组最后一个元素"+floatArray[floatArray.length-1]
);
for(int i = 0;i<10;i++)
{
intArray[i] = i+1;
System.out.print(intArray[i]+"\t");
}
//运行结果:
// ch数组长度3 intArray数组第二个元素为0
//strArray数组第二个元素为null float数组最后一个元素0.0
//1 2 3 4 5 6 7 8 9 10
}
}
方法—函数
方法重载:
例如plus方法名字起的一样,形参写的不一样,就是对方法的重载,不考虑方法的返回值类型
int
,void
等
数组常识易错点:
全局变量数组给形参数组传值(数组的形参与实参名可-同,可-不同)——函数内部被改变数据 ,
此时全局变量的数组也变值,因为 :
数组和对象是引用数据类型 :原理是数组与java中以new创建的-对象会在堆(Heap)中分配内存空间
用完不会马上消 失,而是有垃圾回收机制控制。Stak中的var指向Heap中的var——就是java中的指针!!
class Mathdemo{
public int plus(int m,int n){
return m+n;
}
public float plus(double m,double n){
return (float)(m+n);//复习一下强制转换吧
}
public int plus(int[] arr){
int sum=0;
for(int i = 0 ;i<arr.length;i++)
{
sum+=arr[i];
}
return sum;
}
public int pluss(int[] aarr){
aarr[0] = 12;
return 0;
}
public static void main(String[] args){
int m=5,n=10;
int[] arr ={1,2,3,4,5};
Mathdemo md=new Mathdemo();
System.out.println("int和:"+md.plus(m,n));
System.out.println("double和:"+md.plus(5.1919219191931919,6.7));
System.out.println("arr和:"+md.plus(arr));
md.pluss(arr);
System.out.println("arr[0]:"+arr[0]);//数组给形参传值被改变数据 全局变量的数组也变值
//结果:
//int和:15
// double和:11.891922
// arr和:15
//arr[0]: 12
}
}
可变参数列表:
型如
int... a
这样的 形参叫做可变参数列表,在函数重载时候,可变参数列表的方法是最后被访问的
public void search(int a,int... a){}
对象.search(3,1,2,3)//123为参数列表的实参 也就相当一个数组变量