博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java学习笔记二.2
阅读量:5293 次
发布时间:2019-06-14

本文共 10163 字,大约阅读时间需要 33 分钟。

5、运算符:变量的意义就在于可以进行运算,运算需要用运算符来表示,分为以下几种

1 class test 2 { 3     public static void main(String[] args) 4     { 5         //赋值运算符 =(赋值) +=,-=,*=,/= 6         int a=1234,b; 7  8         /*算数运算符 +(加) -(减) *(乘) /(除) %(取余) ++(自增) --(自减) +(字符串连接) 9          *1、除法运算结果自动转换为int型。10          *2、取余结果的正负取决于被除数11          *3、任何类型变量和 字符串 进行+操作,都是连接操作,结果为字符串类型12          *4、++和--如果在变量前先运算再自增(减);在变量后则相反。这里的先后是在有其他运算时,否则效果相同13          */14         a=a/-1000*1000;15         a=a%333;16         b=++a;17         System.out.println("a="+a);18         /*19          *a+=1==>a=a+1,其他赋值运算类似;20          *但是有一点需要注意:前者是赋值运算,后者是算术运算+赋值运算21          *!!!赋值运算在赋值前会进行类型检测,如果类型内存较高,就会强制类型转换而且进行高位去除22          *!!!而算数运算符在有变量进行计算时不能确定类型,就会使用默认类型23          *!!!总结:两者区别在于前者自动强制转换24         */25 26         /*27          *比较运算符 ==(等于) !=(不等于) >(大于) <(小于) >=(大于等于) <=(小于等于) instanceof(是否是类的对象)28          *运算都有结果,比较运算的结果是true或false,即boolean值。29         */30         System.out.println(3>2);31 32         /*33          *逻辑运算符:用于连接两个boolean类型的表达式34          *  &(与,一假则假)  |(或,一真则真)   !(非,取反) ^(异或,两边不同则真)35          *  &&(与,一假则假) ||(或,一真则真)36          *!!!单双&|的区别在于37          *1、后者有短路效果,即当满足判断条件(&时第一个为假,|时第一个为真)时,后面的表达式不进行计算38          *2、&,|还可以用位运算,而&&,||更常用连接boolean表达式39          *40          *41         */42         int c=3;43         System.out.println(c>2&c<5);44             /*45              *!!!异或有一个特点:一个数异或另一个数两次,得到自身值46              *有一个例子就是不用第三个变量交换两变量的值47             */48             c=c^3^3;49             System.out.println("c="+c);50             int d=3,e=5;51             System.out.println("开始时d="+d+",e="+e);52             d=d^e;53             e=d^e;54             d=d^e;55             System.out.println("交换后d="+d+",e="+e);56 57         /*58          *位运算符:用于对数据按位byte进行运算,详见下图59         */60         System.out.println(~6);61 62         /*63          *三元运算符:(条件表达式)?表达式1:表达式264          *条件表达式结果为真,运算结果为表达式1;否则为表达式2。65         */66 67     }68 }
Java运算符

6、语句:所有语言都只包含三种结构的语句,顺序结构、选择结构、循环结构。这三种结构控制着程序的流程

1 class test 2 { 3     public static void main(String[] args) 4     { 5         //循环结构就是一条条语句从上到下排列,一条语句以;结束。 6  7         /* 8          *选择结构是将条件表达式的值进行判断,如果为真则执行指定语句,(否则执行另一部分语句) 9          *有if和switch两种:10          *if用于    1、对具体值判断,2、对区间判断,3、对boolean类型表达式判断11          *switch用于1、对具体值判断,2、值的个数确定(非区间)3、12         */13         int a=3;14         if(a>5){15             System.out.println("a大于5");16         }else if(a>3){17             System.out.println("a小于5但大于3");18         }else{19             System.out.println("a小于3");20         }21         /*1、switch代码块中的顺序没有关系,但是执行时会先按顺序执行case语句,最后执行default语句22          *2、break用于结束case语句和default语句,如果在}之前省略,后面还有代码,即使已经正确,23          *   还是会向后执行直到break或者}24         */25         switch(a){26             default:27                 System.out.println("a非1,3,5");break;28             case 3:29                 System.out.println("a等于3");30             case 1:31                 System.out.println("a等于1");break;32             case 5:33                 System.out.println("a等于5");break;34         }35 36         /*37          *循环结构:while,do...while,for38          *需要控制:1、循环条件,2、循环体。39          *格式见下图40          *!!!for和while的区别在于:41          *for中的初始化表达式中可以进行变量定义,而且这个变量只在循环内部有效42          *while中则只能用外部定义的变量,所以循环之后不能销毁,如果只用一次会浪费内存43         */44 45         //上面的语句可以嵌套使用46 47         /*48          *Java的代码是保存在代码块中的,即{}之中,最简单是下面这种单独的代码块49          *还有就是上面依附在if,switch,while之后的代码块,依附在函数/类之后的代码块50          *!!!代码块在遇到和开始的{对应的}时就会将生成的变量空间释放,即销毁变量51          *所以代码块内可以访问外部代码块中的变量,但是外部不能访问内部变量。52          *!!!并且注意代码块内部同样不能重复前面定义过的变量,但是可以在其后重新使用该变量标识。53          *54          *由于用后即销毁的特性,可以节省内存,如果当变量只用一次时可以节约空间,因为Jvm内存有限。55         */56         {57             int i=2;58             System.out.println("i="+i);59         }60         int i=3;61         System.out.println("i="+i);62 63     }64 }
Java流程控制
1 public class test { 2     public static void main(String[] args){ 3         int n=0,a=1,b=100; 4         while(a
=x;y--){22 System.out.print(y);23 }24 System.out.println();25 }26 27 //倒三角形,可以看做两个三角形的组合,一个由空格组成,就是效果中的-,另一个是*空格构成28 for(int x=1;x<=5;x++){29 for(int y=1;y
Java循环测试

     

 7、函数:Java中的函数都是在类内,也就是类的方法。简介如下

1 public class Function { 2         //!!!注意Java中不允许嵌套函数。 3          4         //main函数没有返回值,用void标示,即空,这是特殊的返回值。可以用return;来结束函数块,也可以直接省略 5         public static void main(String[] args){ 6             int a=3,b=4,c; 7             c=add(a,b); 8             System.out.println(c); 9             draw(2,2);10         }11         12         /*!!!需要注意的几点13          * 1、这里有一点需要注意:就是由static修饰的函数调用的函数必须也要用static修饰,稍后解释14          * !!!2、函数的参数就相当于函数代码块的局部变量,初始化过程在调用时进行,当函数块结束局部变量消失15          * !!!而且Java中不允许普通变量的引用传递(即&a的使用方式);只能传值赋值,即将值复制一份赋值16          * !!!引用和传值的区别是:只要引用的关系存在,变量就不会消失17          * 3、函数封装一定要明确要求,不要过度操作,像下面如果只要和的返回值,就不要输出。18          */19         static int add(int a,int b){20             return a+b;21         }22         23         /*24          * 同一个类中,变量标识符不能多次使用,但是函数标识符可以,只要满足下面条件即可25          * 1、参数个数不同,2、参数类型不同26          * !!!注意是判断参数而不是返回值27          * 称为函数重载。Java会自动判断应该调用那个函数。28          */29         static int add(int a,int b,int c){30             return a+b+c;31         }32         33         static void draw(int a,int b){34             if(a<=1||b<=1){35                 System.out.println("不能构成矩形!");36                 return;37             }38             for(int x=1;x<=a;x++){39                 System.out.print("*");40             }41             System.out.println();42             if(b>2){43                 for(int z=1;z<=b-2;z++){44                     System.out.print("*");45                     for(int y=1;y<=a-2;y++){46                         System.out.print(" ");47                     }48                     System.out.print("*");49                     System.out.println();50                 }51             }52             for(int x=1;x<=a;x++){53                 System.out.print("*");54             }55         }56 57 }
Java函数

8、数组:下图为简介。注意数组也是对象。

1 public class array { 2     public static void main(String[] args){ 3         //main函数的参数就是字符串数组类型的,值是通过Java。exe运行时传入的 4         //System.out.println(args[0]); 5          6         /*数组的 定义有三种格式:其中[]为数组标识 7          * 1、元素类型[] 数组名=new 元素类型[数组单元个数]; 8          * 2、元素类型[] 数组名=new 元素类型[]{值1,,值2,。。。};   注意不能再][]中标明数组个数 9          * 3、元素类型[] 数组名={值1,,值2,。。。};10          */11         int[] arr={1,2,3};12         13         /*定义数组的主要目的就是 存/取 值14          * 存值可以使用上面的2,3两种方式,也可以在定义后,通过 角标 来保存值15          * 取值只能通过 角标 来进行,取值的一个常用操作就是遍历,通过循环控制角标来实现,16          * 数组的角标是从0开始的17          */18         arr[2]=5;19         for(int i=0;i
数组
1 public class arrayFunction {  2     public static void main(String[] args){  3         /*数组常见操作:  4          * 1、获取最大/小值  5          * 2、数组排序  6          * 3、折半查找(二分查找)  7          */  8         int[] arr={123,2345,31,353,1,35,8111};  9         int max=getMax(arr); 10         System.out.println(max); 11         //Arrays.sort(arr); 12         bubbleSort4(arr); 13         for(int i=0;i
arr[i]?max:arr[i]; 25 } 26 return max; 27 } 28 29 30 /*选择排序:就是选择所有数中最小(大)值和最左端值交换;循环执行直到最后一个数 31 * 和获取最大小值的不同点是需要知道该值的角标来进行交换操作 32 */ 33 public static void selectSort(int[] arr){ 34 for(int i=0;i
arr[j]){ 38 min=arr[j]; 39 min_index=j; 40 } 41 } 42 if(min_index!=i){ 43 swap(arr,min_index,i); 44 } 45 } 46 } 47 //冒泡排序:就是从左到右两两进行比较,大数放左,小数放右。最简单的是循环数组长度次,必然可以完全排序 48 public static void bubbleSort1(int[] arr){ 49 for(int i=0;i
0); 98 } 99 //交换数组单元100 public static void swap(int[] arr,int a,int b){101 int temp=arr[a];102 arr[a]=arr[b];103 arr[b]=temp;104 }105 106 107 /*查找操作:108 * 109 */110 public static int getIndex(int[] arr,int value){111 for(int i=0;i
=0,常用-1117 return -1;118 }119 //二分法查找:数组单元值必须按顺序排列120 public static int getIndex2(int[] arr,int value){121 int min_index=0,max_index=arr.length-1,mid_index=(min_index+max_index)/2;122 if(value
value){127 max_index=mid_index-1;128 }else{129 min_index=mid_index+1;130 }131 if(arr[min_index]
value){132 return -1;133 }134 mid_index=(min_index+max_index)/2;135 }136 return mid_index;137 }138 }
Java数组常用操作
public class ArrayFunction{    public static void main(String[] args){        int a=60;        toOctal(a);    }    public static void toHex(int num){        char[] arr=new char[]{'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'},        arr1=new char[8];        int len=arr1.length,newnum=0,i=0;        /*注意下面程序中for和while循环的不同        for(int i=0;i
>>=4; } } */ while(num!=0){ newnum=num&15; arr1[i++]=arr[newnum]; num>>>=4; } for(int j=len-1;j>=0;j--){ if(arr1[j]=='\u0000') continue; System.out.print(arr1[j]); } } //这个函数是从上面总结出来的,因为只需要修改一小部分内容,所有进制转换都可以通过该函数实现, public static void trans(int num,int base,int offset){ char[] arr=new char[]{'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}, arr1=new char[8]; int len=arr1.length,newnum=0,i=0; while(num!=0){ newnum=num&base; arr1[i++]=arr[newnum]; num>>>=offset; } for(int j=len-1;j>=0;j--){ if(arr1[j]=='\u0000') continue; System.out.print(arr1[j]); } } public static void toHex2(int num){ trans(num, 15, 4); } public static void toBinary(int num){ trans(num, 1, 1); } public static void toOctal(int num){ trans(num, 7, 3); } }
Java数组实例-进制转换

 

 

题外话:Java内存划分(简单版,详细后叙)

1、寄存器区

2、本地方法区

3、方法区

4、栈内存:保存局部变量,特点是一旦作用域结束,局部变量消失,所以栈区刷新很快,很少有垃圾

5、堆内存:

转载于:https://www.cnblogs.com/songfeilong2325/p/4370337.html

你可能感兴趣的文章
为什么子类的构造方法在运行之前,必须调用父类的构造方法?能不能反过来?为什么不能反过来?...
查看>>
Could not resolve view with name '***' in servlet with name 'dispatcher'
查看>>
springBoot配置elasticsearch搜索
查看>>
Chapter 3 Phenomenon——12
查看>>
MyBatis源码解析【6】SqlSession运行
查看>>
中小学教育缴费遇到的一些问题
查看>>
FAIR开源Detectron:整合全部顶尖目标检测算法
查看>>
C语言中求最大最小值的库函数
查看>>
SRS
查看>>
14.typescript-类与接口
查看>>
js学习(精华帖)
查看>>
和小哥哥一起刷洛谷(1)
查看>>
分享squid缓存服务器配置-之conf配置文件的详细介绍
查看>>
jQuery教程详解(一)
查看>>
jquery对id中含有特殊字符的转义处理
查看>>
DP学习之路(1) 01背包
查看>>
获取元素样式信息于三中获取方式的区别
查看>>
测试主要环节
查看>>
08-17工作总结
查看>>
遇麻烦,Win7+Ubuntu12.10+Archlinux12.10 +grub
查看>>