第一章java数据类型以及相关选择语句的学习应用
个人学习经历
为什么要学习java语言以及算法
自己去找工作室面试时候因为最基础的自己没掌握扎实错失了这个机会,发现了自己的诸多漏洞,现在开始女娲补天的修补过程。以这个帖子记录和恒明自己java语言的学习经历
学习算法的一点小tips
对于红皮书而言 算法数据结构 而言他们经典的算法是将使他们的最低能耗利用率最大化 即花费最少的时间办最多的事情
一、java语言的学习语句前的一些小“规则
java程序的基本结构
- 原始数据类型:精确定义什么是整数 浮点数 以及布尔值等
目的是组成类似于数学公式定义的表达式
布尔值:只能用真和假来表示的一个真即为true同理假即为false
定义:一 数据类型
(1)基本数据类型
数值型 {整数类型 (byte short int long)浮点类型(double float)}
字符型(char)
布尔型(boolean)
(2)引用数字类型
类(class’) 接口(interface) 数组 枚举(enum)注解(Annotation)
一些细节的注意事项:
1 作为一个long类型变量赋值的时候需要在该表达式的后面加上L
2 double(64位8字节)比float(32位4字节)表示的跟精确
3一个小数会被默认成double的所以当需要float的时候必须在数值后面加上一个f
二 对于变量的类型转换
小的变成大的不需要声明 但是大的变成小的必须声明
注意声明格式必须为:目标类型 变量名={目标类型}值得形式
丢失数据时候是从高位丢失的
报错!!!警告:表达式类型的自动提升 比如:c b a都是byte类型char 等
他们都会在运算的时候提升到int型 注意 如果是大的转换成小的必须强制声明不然会报错!
参与运算的值跟你本身算出来的值不一样 很可能不同 因为这个原因可能会产生报错
表达式的先后顺序:算数运算符* / %高于+ -
逻辑运算符 ! 大于 &&大于 ||
关于! & || 等相关逻辑运算符的表达形式(排除0和1)
&:就是物理电路的串联
|:是物理电路的并联
异或(^):不同是true相同是false
&& || 与上面逻辑一样 但是 &&:左边是true放行 false不让过
||而言 false 让通过 true不让过
当出现只有0 1 的二进制时候 0为false 1为true
新增:~ :取反
<<: 左移 右边用0填充,每移动一位相当于*2
>>:右移 左边用零或1填充(取决于移动前的是0还是1)每动一位相当于/2
>>>:无符号的右移 值得是只用0填充
A?xxB:xxxC
A条件下能否达成?能----->B 不能------->C
二、几大语句的基本应用和内在的逻辑
声明和 赋值语句
创建某种变量的标识符并且为了他命名
赋值语句的左侧必然是单个变量
int i;
double c;
byte d;
隐形赋值:指的是递增或递减的运算符++i 等
或者其他复核运算符比如i/=2 —>i=i/2
条件语句(if…else形式)
if(判断的条件){
如果真的执行语句1
}else{
不满足上述条件执行语句2
}
`又或者 if(<boolean expression>){<block statements>}指的是boolean 的一种判断形式ture还是false
包括if 。。。elseif else 多方位嵌套应用
switch语句注意:switch控制的表达式的语句类型只能是byte short char int enum枚举以及stirng类型 不能是boolean类型 不能是boolean类型不能是boolean类型 重要的事情重复三遍 因为boolean类型只有true和false之分不可能跟正常的一样
switch(控制表达式){
case 目标值1:
执行语句1
break;//如果没有break他就不会跳出这个循环就会继续执行控制语句2
case 目标值2:
执行语句2
break;
default://都不满足上述条件怎么办?执行default
执行语句n+1
}
注意switch的语句中多个case的标签语句以及default的语句顺序可以随机并不影响其程序执行成果
循环语句
一 while循环语句
while循环语句会反复判断(循环条件)是否成立如果成立则{}内的语句会反复执行直到循环条件不成立才会结束这个循环。
语法格式如下:
while(循环的条件){
执行的语句//该部分的语句称为循环体
}
注意在每次循环的过程中需要人为的在**{里面最后一行添加x的变量例如递增递减等例如x++ x–之类的 如果不添加则会陷入一个死循环}**
注意:break语句:立即从循环中退出
continue语句:立即开始下一轮循环
do…while语句
语法结构如下:
do{执行的语句
}while(循环的条件)
与上面while的区别是限制性语句在判断条件也就是是说比while的条件判断多一次 需要加1
for循环语句
在循环次数已知情况下可以代替while循环
具体如下情况:
`
for(初始化表达式;循环件;操作表达式){
执行语句//此处为循环体。
}
可用步骤拆解为:
for(1;2;3){
4
}
j具体执行步骤大白话
1243 1243 1243 1243
在二进行一次判断如果错误直接结束 如果继续 就继续
循环嵌套
互相之间瞎够吧套 烦死个人的同时达成某种目的
例如双for循环例如
for(1.1;1.2;1.3){
for (2.1;2.2;2.3){
大白话解释 :九连环 思路 外层 1.1 开始内层执行从2.1起到最后 一次
外层1。2 内层 继续一整套循环 直到外层结束所有循环跳出
小tips :print ()
跟println的区别如下 :对于print()而言 执行完后不会换行
而但对于println()而言控制台执行完毕后会自动换行
举个具体例子 :
99乘法表双for循环的模型
任务目标:请用for循环形式表达9*9乘法表;
具体思路如下:
当出现1时候 是1 乘1 当出现2的时候 是2乘1 2乘2 当出现3 3乘1 3乘2 3乘3 有个数 定义为n n从1到9递增 在每次递增的时候 另外一个数m是小于等于n的一个正整数让n每次增加一个 m就从1 增到跟n相等的值停下
外层循环是1到n 内鞥循环是1到m让里面的循环值恰好等于n即可
1 1 。 2 1 2。 3 123 。 4 1234 。。。
所以 外层循环n 内层循环m 这个模型为99乘法表模型
所以具体代码如下:
public class double for xunhuan ;
public static void main (String arg[]){
int m,n;
for (m=1;m<=9;m++){
for(n=1;n<=m;n++){
System.out.print(m+"*"+n+"="+m*n+"\t");//不打完不换行的那种一直不换行那种
}
System.out.println("");//外循环m从1到m开始是每打完一次换一个行
}
}
代码最终执行结果如下:
这个是9*9乘法表的最终程序执行结果可作为第一个java的数学模型应用第一个模型循环的嵌套双循环的应用
这是我的三个小板凳嘿嘿嘿
java的三个小板凳
题外话:这个代码从第一次接触for循环的漏洞百出到一遍过不用修改 练习了三遍 整整三个小板凳 爱因斯坦的三个小板凳 我也做了三个“小板凳”
感受到了英语的重要之处 好多都是英文单词拼写例如 Sting Stystem 奇怪了为啥这个英文记得那么快但是英文考试我却不行嗯好奇怪 可能是惧怕把 不管怎么说 希望以后学算法的时候也保持这个样的状态与激情后续可能会加更密码学 和java五十种算法还有逆向的自学之路以及各种前期工作的准备 一入逆向深似海,从此头发是路人! 我爱计算机 我爱代码 我爱 数学!!!
`